• ベストアンサー

正規表現で特定の単語を除外したい

javaという単語で検索するときjavascriptのjavaがマッチしてしまうのが煩わしいです。 正規表現で、javascriptという単語を含まず javaを含む行をマッチさせたい場合パターンはどのように書くものでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>幅ゼロ? >先読み? (?!script) の部分は、 javaに続くscriptが有る場合にマッチしないという意味です。 つまり javaにはマッチしjavascriptにはマッチしないということになりますが つまり、javaへのマッチを調べるために直接マッチする部分である(結果としてマッチする部分になる)javaだけでなくその後続する部分を読むということで、「先読み」すると言います。 また、この部分は、マッチする部分には当たらないので、通常の正規表現とは違ってマッチする部分ではないつまりこの部分は「幅ゼロ」(否定された部分がマッチした部分にはならない)という意味です。

noname#58390
質問者

お礼

(?!script)の使い方はわかりましたが、相変わらず 幅ゼロ 先読み の部分は意味が分からないままです。 しばらく時間を置いてからまた取り組んでみます。 どうもありがとうございました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

java(?!script)

noname#58390
質問者

お礼

お蔭様で上手くいきました。ありがとうございます。 以下No.1へのお礼に同じです。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

.{0,}(java)(?!script).{0,} でどうでしょう?

noname#58390
質問者

お礼

お蔭様で上手くいきました。ありがとうございます。 ところで、また疑問が? javaのドキュメントで見ると (?!X) X、幅ゼロの否定先読み と説明されてますが、 幅ゼロ? 先読み? が、他の(?<!X)などプログラムで実際に比較してみても全くつかめませんでした。 解説していただけるとうれしいです。

関連するQ&A