[英]Python Regex match string between specific string and end character
[英]python regex: to match space character or end of string
我想在文本中匹配空格字符或字符串結尾。
import re
uname='abc'
assert re.findall('@%s\s*$' % uname, '@'+uname)
assert re.findall('@%s\s*$' % uname, '@'+uname+' '+'aa')
assert not re.findall('@%s\s*$' % uname, '@'+uname+'aa')
模式不對。
如何使用python?
\\s*$
不正確:這匹配“零或多個空格后跟字符串的結尾”,而不是“一個或多個空格或字符串的結尾”。
對於這種情況,我會使用(?:\\s+|$)
(在原始字符串中,正如其他人提到的那樣)。 (?:)
部分只是將子表達式分開,以便| 運算符匹配正確的片段,而不是正確的片段。
試試這個:
assert re.findall('@%s\\s*$' % uname, '@'+uname)
如果不使用原始字符串,則必須轉義\\
字符。
這有點令人困惑,但源於這樣的事實: \\
是python解釋器和re
模塊的元字符。
使用原始字符串 。
assert re.findall(r'@%s\s*$' % uname, '@'+uname)
否則,在常規字符串中使用\\
作為特殊字符會與在正則表達式中用作特殊字符相沖突。
但這種說法不可能失敗。 當然,除了“@”加上變量uname
的內容之外的字符串將匹配正則表達式“@”加上uname
加上可選(總是空的)空格,然后匹配字符串的結尾。 這是一個重言式。 我懷疑你正試圖檢查別的東西?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.