ここに問題があります:
split=re.compile('\\W*')
この正規表現は、正規表現を処理する場合は問題なく機能しますが、のような単語を含む表現が必要になる場合がありますkäyttäj&aml;auml;
。
&
と;
文字を含めるには、正規表現に何を追加する必要がありますか?
エンティティを 1 つの単位として扱います (数値文字コードを含めることもできるため)。結果として、次の正規表現が得られます。
(\w|&(#(x[0-9a-fA-F]+|[0-9]+)|[a-z]+);)+
これは一致します
/編集: エラーを指摘してくれたΤΖΩΤΖΙΟΥ に感謝します。
おそらく、問題を逆にしたいと思うでしょう。つまり、スペースのないすべての文字を見つけることです。
[^ \t\n]*
または、余分な文字を追加したい:
[a-zA-Z0-9&;]*
HTMLエンティティを照合する場合は、次のようにしてみてください。
(\w+|&\w+;)*
余分な文字を含む文字クラスを作成する必要があります。例えば:
split=re.compile('[\w&;]+')
これでうまくいくはずです。ご参考までに
\w
(小文字の「w」) は、単語の文字 (英数字) に一致します。\W
(大文字の W) は、否定された文字クラスです (英数字以外の文字に一致することを意味します)。 *
0 回以上+
一致し、1 回以上一致するため、*
何にでも一致します (そこに文字がなくても)。この正規表現がうまくいったようです:
split=re.compile('(\\\W+&\\\W+;)*')
提案をありがとう。それらのほとんどは Reggy で問題なく動作しましたが、なぜ失敗したのかよくわかりませんre.compile
。