这里的问题:

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失败了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top