2017-04-07 5 views
1

が含まれていない場合にのみ、私は、文字列内の単語にマッチしたいのですが、文字列が含まれていない場合にのみ、//正規表現は:文字列内の単語と一致するが、行はスラッシュ

例:マッチ言葉はbooks

これは一致する必要があります:

I read booksを。

これは一致しません。

// I read books。単語と一致するように

、私はこの正規表現作成しました:

(?<=.)books(?=\s*)

をしかし、どのように、私は//が含まれている文字列を無視するのですか?

追加情報:

  • //私が一致したい単語の前に常にあります。

  • //は必ずしも文字列の先頭ではありません。先導する 空白が可能です。

  • 私は次のステップでそれを置き換えることができるように単語を一致させたい。

  • 私は、Visual Studioのファイルの機能に置き換え2013年

でそれを使用するには、あなたの努力をありがとうございました。

+0

^* // *テキストは、単語 'テキスト' と//でリードして任意の文字列にマッチします。 ^は一致します:Begin of line – suhao399

+0

これは実行できますが、これは最初の '' book "' 'of' 'のマッチングの場合には当てはまりません。この場合を排除できますか?つまり、ある行の '/'の前後に(おそらく複数回)出現することがわかっていますか? – Bohemian

+0

@KMS:私は自分のコメントを削除し、望むなら元に戻します。 –

答えて

1

WiktorStribiżewはコメントで私の質問に解決策を書いた。

ソリューション:(?<!//.*?)(books|spoons|shelves)

+1

ああ、そうです。可変長のネガティブなルックアヘッドが許されます。何が残念なのか、私はそれらなしでソリューションが並んでいた。 '^(?:[^ \ /] *(?:\ /(?!\ /))|)* [^ \ /] *(本)'。それらを@Wiktorsの答えは、もちろんより効率的です。 – Yunnosch

関連する問題