我想简化这个表达式(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
请发布'主题字符串'和所需输出的示例。 –