寻找正则表达式,包括字母数字+"&"和";"
时间:2020-03-06 14:54:47 来源:igfitidea点击:
这是问题所在:
split=re.compile('\W*')
这个正则表达式在处理正则单词时效果很好,但是在某些情况下,我需要将该表达式包含诸如"käyttäj&aml; auml;"之类的单词。
我应该在正则表达式中添加什么以包含&
和;
字符?
解决方案
我们可能想使问题逆转,即找到所有没有空格的字符:
[^ \t\n]*
或者我们想添加额外的字符:
[a-zA-Z0-9&;]*
如果要匹配HTML实体,则应尝试以下操作:
(\w+|&\w+;)*
我们应该制作一个包含额外字符的字符类。例如:
split=re.compile('[\w&;]+')
这应该可以解决问题。供你参考
\ w
(小写字母'w')匹配单词字符(字母数字)- \ W(大写的W)是一个否定的字符类(意味着它与任何非字母数字字符匹配)
- " *"匹配0次或者多次,而" +"匹配一次或者多次,因此" *"将匹配任何内容(即使那里没有字符)。
我将实体视为一个单元(因为它们也可以包含数字字符代码),导致以下正则表达式:
(\w|&(#(x[0-9a-fA-F]+|[0-9]+)|[a-z]+);)+
这个匹配
- 文字字符(包括" _"),或者
- 至少一个十进制数字,或者
- 至少一个字母(=命名实体),
- 分号
- 至少一次。
/ EDIT:感谢我们指出错误。
看起来像这样:
split = re.compile('(\ W +&\ W +;)*')
感谢建议。他们中的大多数人在Reggy上都能正常工作,但是我不太明白为什么他们在re.compile上失败了。