我想在Python中使用正則表達式在文本文件中的特定字符串之前檢索所有內容。 例如與線在特定字符串之前檢索文本Python
text = 'What I want is a red car'
我想取回一切,這是之前的「紅車」,那就是:
result = 'What I want is'
整個字符串「紅色賽車」是很重要的,而不是隻有「紅色」或「汽車」分開!
在此先感謝!
我想在Python中使用正則表達式在文本文件中的特定字符串之前檢索所有內容。 例如與線在特定字符串之前檢索文本Python
text = 'What I want is a red car'
我想取回一切,這是之前的「紅車」,那就是:
result = 'What I want is'
整個字符串「紅色賽車」是很重要的,而不是隻有「紅色」或「汽車」分開!
在此先感謝!
:
regex = re.compile('(?P<before_red_car>.+) a red car')
regex.search("What i want is a red car").group('before_red_car')
如果你不想爲您的羣組命名:
regex = re.compile('(.+)a red car')
regex.search("What i want is a red car").group(1)
如果需要捕捉包括換行符在內的所有內容,請添加re.DOTALL
標誌。
但是,這樣做
text = 'What I want is a red car'
text.split('a red car')[0]
甚至:
text = 'What I want is a red car'
text.replace('a red car', '')
工作過了,可以說是比較容易理解。 他們也快兩倍:
timeit.timeit(lambda: text.split('a red car')[0])
0.5350678942020507
timeit.timeit(lambda: text.replace('a red car', ''))
0.5115460171814448
timeit.timeit(lambda: regex.search("What i want is a red car").group(1))
1.123993800741033
# Without re.compile()
timeit.timeit(lambda: re.search('(.+)a red car', text).group(1))
1.94518623436079
這可能有助於
text = 'What I want is a red car'
print(text[0:13])
然後如果文本被更改爲」您想要的是紅色汽車'? –
你的意思是文字='你想要的是紅卡?' –
準確地說,你最終會返回'你想要什麼'......我的觀點是,這個解決方案不是動態的或靈活的。此外,我剛剛測試了上述內容,並返回了「我想要的我」,這看起來不像OP想要 –
你可以試試這個:如果你需要使用這個正則表達式
strIn = 'What I want is a red car'
searchStr = 'a red car'
print(strIn[:strIn.find(searchStr)])
你有沒有嘗試過自己?你嘗試了什麼? – khelwood
其實,這是你可以輕鬆地谷歌自己... –
重複的https://stackoverflow.com/questions/12572362/get-a-string-after-a-specific-substring/12572391#12572391? –