我想簡化這個表達式(myExpr):簡化正則表達式
\s+#[A-z][A-Za-z0-9-_]+|^\s*#[A-z][A-Za-z0-9-_]+
所以我寫了這一點:
[\s+|^\s*](#[A-z][A-Za-z0-9-_]+)
要
re.findall(myExpr,string)
第一個正則表達式使用工作但不是最後一個。我在第二個中有錯嗎?
我想簡化這個表達式(myExpr):簡化正則表達式
\s+#[A-z][A-Za-z0-9-_]+|^\s*#[A-z][A-Za-z0-9-_]+
所以我寫了這一點:
[\s+|^\s*](#[A-z][A-Za-z0-9-_]+)
要
re.findall(myExpr,string)
第一個正則表達式使用工作但不是最後一個。我在第二個中有錯嗎?
你需要圓括號(…)
,而不是括號[…]
因爲後者表示一個字符類:
(\s+|^\s*)(#[A-Za-z][A-Za-z0-9-_]+)
你也可以使用它作爲a+
相當於aa*
:
(^|\s)\s*(#[A-Za-z][A-Za-z0-9-_]+)
如果Python支持它,你可以使用'\ w'而不是'[A-Za-z0-9_]'(根據'\ w'的定義)。我發現自己想知道OP的'A-z' - 雖然有效,但很可能是一個錯誤。 – usr2564301
@Jongware哦,沒有注意到後者。實際上,這是一個常見的錯誤,因爲範圍'A'(0x41)到'z'(0x7A)不僅包含'A'-'Z'(0x41-0x5A)和'a'-'z'(0x61 (0x5B),'''''(0x5C),']'(0x5D),'^'(0x5E),'_'(0x5F)和'''( 0X60)。 – Gumbo
@Gumbo謝謝,但這會在結果中創建兩個組。但這不是問題,我可以破解結果並提取第二組。 – 4m1nh4j1
'[\ S + |^\ s *]'是匹配空格,加號,管道字符的字符集,... – roippi
請發佈'主題字符串'和所需輸出的示例。 –