英数字+“&”を含む正規表現を探していますおよび&#8220 ;;”
質問
問題は次のとおりです。
split=re.compile('\\W*')
この正規表現は、正規の単語を処理する場合に正常に機能しますが、 k& amp; auml; ytt& amp; auml; j& aml; auml;のような単語を含める必要がある場合があります
。
&
および;
文字を含めるために正規表現に何を追加する必要がありますか?
解決
おそらく問題を逆にしたい、つまりスペースなしですべての文字を見つけたい:
[^ \t\n]*
または、追加の文字を追加する場合:
[a-zA-Z0-9&;]*
HTMLエンティティを一致させたい場合は、次のようなものを試してください:
(\w+|&\w+;)*
他のヒント
エンティティを1つの単位として扱います(数値コードも含めることができるため)。次の正規表現が生成されます。
(\w|&(#(x[0-9a-fA-F]+|[0-9]+)|[a-z]+);)+
これは一致します
- 単語文字(“
_
”を含む)、または - で構成されるHTMLエンティティ
- キャラクター“
&
&#8221 ;,- キャラクター“
#
&#8221 ;,- キャラクター“
x
”少なくとも1桁の16進数が続く、または - 少なくとも1桁の10進数、または
- キャラクター“
- 少なくとも1文字(=名前付きエンティティ)、
- キャラクター“
- セミコロン
- キャラクター“
- 少なくとも1回。
/ EDIT:ΤΖΩΤΖΙΟΥエラーを指摘してください。
余分な文字を含む文字クラスを作成する必要があります。例:
split=re.compile('[\w&;]+')
これでうまくいくはずです。あなたの情報について
-
\ w
(小文字の「w」)は単語の文字(英数字)に一致します -
\ W
(大文字のW)は否定文字クラスです(英数字以外の文字と一致することを意味します) -
*
は0回以上一致し、+
は1回以上一致するため、*
は何も一致しません(文字がない場合でも)あります。)
このように見えたのはトリックのようです:
split = re.compile( '(\\ W +& \\ W +;)*')
提案をありがとう。それらのほとんどはReggyで問題なく動作しましたが、re.compileで失敗した理由がよくわかりません。
所属していません StackOverflow