簡體   English   中英

使用關鍵字提取可選片段的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM