我可以如何使用正則運算式:
'my name is Bob my name is Julian my name is Tim'
對此
['my name is Bob', 'my name is Julian', 'my name is Tim']
基本上我想得到“我的名字”之后的所有文字。想象一下,“我的名字”后面的字符可以是換行符、數字、字串、特殊字符等。
我嘗試了以下代碼但無法正常作業
re.findall(f'my name.*?', content)
uj5u.com熱心網友回復:
由于您的目標是拆分字串,因此您只能使用re.split前瞻:
map(str.rstrip, re.split('(?=my name)', content))[1:]
輸出: ['my name is Bob', 'my name is Julian', 'my name is Tim']
注意。切片是洗掉由吐痰產生的初始空字串。如果您現在除了第一個之外,“我的名字”之前總會有一個空格,請使用re.split('\s (?=my name)', content)
uj5u.com熱心網友回復:
當您到達下一個“我的名字”或字串末尾時,您可以使用前瞻 ( (?=...)) 停止。
>>> import re
>>> s = "my name is Bob my name is Julian my name is Tim"
>>> print(re.findall(r"my name is . ?(?=\s*my name|$)", s))
['my name is Bob', 'my name is Julian', 'my name is Tim']
但是,我確實相信您不需要“我的名字”,而只是嘗試獲取名稱本身:
>>> print(re.findall(r"my name is (. ?)(?=\s*my name|$)", s))
['Bob', 'Julian', 'Tim']
至于您的正則運算式,原因'my name.*?'不起作用是因為.*?嘗試匹配最少數量的字符(?),并且它匹配 0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/415246.html
標籤:
下一篇:為appium派生Xpath
