簡體   English   中英

python regex:匹配空格字符或字符串結尾

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

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