私は、文字列に#wineなどのハッシュタグをキャッチする正規表現の式#(\w+)
を持っており、それはまた、& #039のようなHTMLエンティティにピックアップに起こります;。私はアンパサンドを探してこれらを避けるために必要です。これをどのように検証できますか?これは(やや少ないエレガントが)トリックを行うだろう、それに失敗正規表現のハッシュタグ&HTMLエンティティの重複が整理
(?<!&)#(\w+)
:あなたの言語の正規表現エンジンがサポートしている場合
私は、文字列に#wineなどのハッシュタグをキャッチする正規表現の式#(\w+)
を持っており、それはまた、& #039のようなHTMLエンティティにピックアップに起こります;。私はアンパサンドを探してこれらを避けるために必要です。これをどのように検証できますか?これは(やや少ないエレガントが)トリックを行うだろう、それに失敗正規表現のハッシュタグ&HTMLエンティティの重複が整理
(?<!&)#(\w+)
:あなたの言語の正規表現エンジンがサポートしている場合
は、私は否定的lookbehindアサーションを使用することをお勧め
(?:^|[^&])#(\w+)
することができますこの(?:^|\s)(#\w+)
のような正規表現を試して、最初に取得したグループをマッチとして選んでください。
これは良いことではありません。ワード境界は、ワードキャラクタが非ワードキャラクタに続くとき(その逆の場合)に発生します。 "#"は非語の文字なので、先行する文字は単語の文字である必要があります。これは、OPが念頭に置いていることではありません。ブラウザのコンソールで実行できる簡単なテストケースです: '/\b#\w+\b/.test('#foo #bar #baz ')'(スポイラー: 'false'を返します)。 – davidchambers
@davidchambers指摘に感謝します。正規表現を修正しました。私はちょうど何かシンプルなものを試していた。 –
2番目の正規表現は、望ましくないかもしれない 't#wine'にマッチします。 –
確かに。私はOPが何を持っているかを正確には知らない。おそらく、例えば、 'foo bar baz(#wine)' *は一致するはずです。必要に応じて2番目の正規表現を微調整するのは簡単です。 – davidchambers
langはphpですが、これはおかげで、私はいつもdocのおかげで否定的な表情に困っています。 – ThomasReggi