寻找一个经常的表达,包括字母数字+"&"和";"
题
这里的问题:
split=re.compile('\\W*')
这经常表达的正常工作时处理常规的词语,但也有些时候,我要表达以包括这样的词 käyttäj&aml;auml;
.
什么我应该添加到regex包括 &
和 ;
人物?
解决方案
你可能想要反过来解决问题,即找到没有空格的所有字符:
[^ \t\n]*
或者您想添加额外的字符:
[a-zA-Z0-9&;]*
如果您想匹配HTML实体,您应该尝试类似:
(\w+|&\w+;)*
其他提示
我将把各实体作为一个单元(因为它们也可以包含的数字代码),导致在以下常规的表达:
(\w|&(#(x[0-9a-fA-F]+|[0-9]+)|[a-z]+);)+
这个比赛
- 一个字符的(包括"
_
"),或 - HTML实体组成的
- 字符"
&
”,- 字符"
#
”,- 字符"
x
"随后至少一个进制数字,或 - 至少一个十进制数字,或
- 字符"
- 至少一个字母(=命名的实体),
- 字符"
- 一分号
- 字符"
- 至少一次。
/编辑:由于ΤΖΩΤΖΙΟΥ指出了一个错误。
你应该做一个字符类将包括额外的人物。例如:
split=re.compile('[\w&;]+')
这应该做的伎俩。你的信息
\w
(情况下的'w')相匹配的字符的(字母数字)\W
(资本W)是否符类(这意味着它相匹配的任何非字母数字符)*
匹配0或更多的时间和+
相匹配的一个或更多的时间,所以*
将任何匹配(即如果没有人物那里)。
看起来这样做了诀窍:
分裂= re.compile( '(\\ W +&安培; \\ W +;)*')
感谢您的建议。他们中的大多数在Reggy上工作得很好,但我不太明白他们为什么用re.compile失败了。
不隶属于 StackOverflow