[英]Python regex split but put end part of regex match back into string?
[英]match part of a string until it reaches the end of the line (python regex)
如果我有一個包含多行的大字符串,並且我想將一部分行匹配到該行的末尾,那么最好的方法是什么?
所以,例如我有這樣的東西,我希望它在到達新行字符時停止匹配。
r"(?P<name>[A-Za-z\s.]+)"
我在之前的回答中看到了這個:
$ - 表示匹配字符串的結尾,或者如果啟用了多行,則表示行的結尾。
我的問題是,作為答案的作者,你如何“啟用多線”?
簡單地使用
r"(?P<name>[A-Za-z\t .]+)"
這將匹配ASCII字母,空格,制表符或句點。 它會停止,這不是包括在該組中的第一個字符-和換行符沒有(而它們都包含在\\s
,並且由於它的不相關的多模式是否開啟或關閉)。
您可以通過將re.MULTILINE
作為第二個參數傳遞給re.compile()
來啟用多行匹配。 但是,需要注意的是:因為+
量詞是貪婪的,所以這個正則表達式將匹配盡可能長的字符串,所以如果下一行由字母和空格組成,則正則表達式可能匹配多個line( $
匹配任何字符串的結尾)。
有三種解決方案:
\\s
)在內的任何空格,而是重復的字符集與該換行符不匹配。 +?
中,非貪婪(“最小”)的版本+
,這樣它會盡可能短的字符串作為可能的匹配,並且因此停止在第一換行符。 text.split('\\n')
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.