簡體   English   中英

Python Regex捕獲單個字符的字母

[英]Python Regex to capture single character alphabeticals

為什么下面的正則表達式不能顯示True?

print re.compile(r'^\b[a-z]\b$').search('(s)')

我想匹配可能在字符前后包含非字母數字字符但在字符串中任何地方都沒有字母數字字符的單個字符字母。 因此,以下應匹配:

'b'
'b)'
'(b)'
'b,

並且以下內容應該被遺漏:

'b(s)'
'blah(b)'
'bb)'
'b-b'
'bb'

這里的解決方案不起作用。

僅當整個字符串是單個字符時,開頭的^和結尾的$才會使表達式匹配。 (因此,它們會使每個\\b過時。)刪除錨點以匹配較大的字符串:

print re.compile(r'\b[a-z]\b').search('b(s)')

或者,確保僅使用一個字符,例如:

print re.compile(r'^\W*[a-z]\W*$').match('b(s)')

請注意,在第一種情況下, 'b-b''blah(b)'將匹配,因為它們包含單個字母字符,不會觸及其中的其他字符。 在第二種情況下, 'b(s)'將不匹配,因為它包含兩個字母字符,但是其他四種情況將正確匹配,並且所有不匹配的情況都將返回None(錯誤邏輯值),如下所示:意。

好的,這是答案:

print re.compile(^[(,\[]?[a-z][),;\]]?[,;]?$).search('(s)')

它捕獲了單個字符字母數字的各種復雜模式。 我意識到這與我要求的有所不同,但實際上效果更好。

暫無
暫無

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

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