[英]Regular expression for extracting an optional piece using a keyword
我希望能夠從字符串中提取2個片段,這些片段可能由特定的關鍵字分隔。 如果沒有關鍵字,則假定僅提供第一部分。 給出更具體(更清晰)的示例:
'a鍵b'--->返回(a,b)
'a'(未識別'key'字符串)-> return(a,'')
我首先嘗試使用正則表達式“(。 )key(。 )”,它顯然不適用於情況2 ...然后使用“(。 )(key)?(。 )”,但不適用於情況1 ...我正在使用Python和findall()函數。
有什么想法嗎? 我覺得這與貪婪的“(。*)”有關,但無法弄清楚。
非常感謝!
>>> "a key b".split(" key ")
['a', 'b']
>>> "a".split(" key ")
['a']
>>>
string.split()
什么問題?
string.split(' key ')
拆分似乎很適合您的問題:
def extract(text):
return ([part.strip() for part in text.split("key", 1)] + [''])[:2]
for test in ["a key b", "a", "a key", "a longer example of key is this"]:
print extract(test)
這將為您帶來以下結果:
['a', 'b']
['a', '']
['a', '']
['a longer example of', 'is this']
如果您確實希望使用正則表達式,則可以使用以下命令得出相同的結果:
def extract(text):
return re.search(r'(.*?)(?:\s+key|\Z)\s*(.*)', text).groups()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.