寻找正则表达式,包括字母数字+"&"和";"

时间: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上失败了。