背景
項目中需要全部替換EventBus,所以需要正則到下面圖片中的代碼規則,然后check是否已經替換,如果能正則到,則表明這個一個還未替換的代碼。
image.png
要求:
圖片中有三處代碼,前兩處是kotlin寫的,第三處是Java寫的,1和2 的不同就是寫法的不同,其實用Android studio格式換一下就可以變成和1一樣的代碼格式,但是現實中很多同學不按要求格式化,所以得兼容一行的情況,1和3基本上都一樣,另外threadMode = ThreadMode.MAIN
不一定固定的,還可能是threadMode = ThreadMode.ASYNC
等情況,而@Subscribe(.*)
比較固定。
嘗試解決:
這個問題的關鍵在于正則的規則的匹配,其次是選用 Python re庫的哪個方法,前者我嘗試過去寫,能匹配到兩行,但是指定不了兩行的內容。
正則:
parent=r'@Subscribe\(.*\)\n.+'
search = re.findall(parent, str, re.M)
比如我想定制后面的HomeSplashStateEvent
,也可以叫TestEvent、DemoEvent
,在正則中可能需要:
'HomeSplashStateEvent | TestEvent | DemoEvent'
大家可以幫助我一下嗎?