英数字+“&”を含む正規表現を探していますおよび&#8220 ;;”

StackOverflow https://stackoverflow.com/questions/152218

  •  02-07-2019
  •  | 
  •  

質問

問題は次のとおりです。

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で失敗した理由がよくわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top