簡體   English   中英

這個簡單的正則表達式有什么問題?

[英]what is wrong with this simple regex?

我陷入了垃圾堆:

import re
print re.search('return[^$]+',
                'return to the Treasury of $40 million\nnow!').group(0)

上面的正則表達式只能return to the Treasury of ,但我希望其中包括$40 million 我從regex了解到的是,我要它take every thing until the end of the line

我不想使用.* ,我希望endline delimiter從某點開始直到行尾。 如果我從搜索字符串中刪除$,則會打印完整字符串。 為什么終端定界符與美元符號匹配?

return[^$]+

將匹配字符串“ return”,后跟一個或多次不是“ $”的字符。

這是因為[]表示字符組,而[]內的特殊字符被作為簡單字符穿線。

因此,它僅匹配到美元符號。

為什么不使用:

return.+$

這正是您想要的。

您為什么不想使用.*

您擁有的正則表達式將匹配任何以“ return”開頭的字符串,然后匹配一個或多個不是“ $”字符的字符。 請注意,這不會尋找行尾標記。

return.*$將匹配所有內容,包括行尾標記。 如果要處理多行輸入,則可能(但可能不需要)使.*成為惰性匹配器。

import re
text = 'we will return to the Treasury of $40 million\nunits of money.'
re.search(r'return.*$', text, re.MULTILINE).group(0)

# prints 'we will return to the Treasury of $40 million'

您需要包括多行標志,然后$將在換行符處匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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