2010-12-02 15 views
5

これは簡単です。特定の単語が含まれていないものをすべて選択する正規表現が必要です。REGEX:特定の文字列と等しくないものをすべて選択してください

もし私がこの文章を持っているなら、「この文の真ん中に単語があります。」 正規表現は "中"以外のものをすべて取得しますが、その文の中のすべてを選択する必要がありますが、 "中"です。

これを行う簡単な方法はありますか?

ありがとうございました。

+0

ええと、ちょうど文字列varにデータをコピーし、検索/置換する....おそらくREよりも安いとにかく。 – Keng

+0

この単語は、文章中に複数回現れますか? –

答えて

2

1つの正規表現マッチ操作が不連続であることはできません。

次の2つのキャプチャグループを使用することができます。

(.*)middle(.*)

そして、試合後のグループ1と2をキャプチャの内容を連結します。

パーサーで「改行改行」オプションを有効にすることもできます。たとえばJava's DOTALLため
を参照してください、.NET's SinglelinePerl's sなど

+0

/これを行う場合は、 '.'で改行文字を一致させるようにしてください。 – Keng

+0

@Keng良い点。 –

+0

これは、どちらのキャプチャグループにも「中」が含まれていることを保証するものではありません。すべき? – tchrist

1

が正の前後参照を移動するための方法である:

/^(.+)(?=middle)/ -- gets everything before middle, not including middle 

/(?!middle)(.+)$/ -- gets everything after middle, not including middle 

次に、あなただけの両方

の結果をマージ
+0

/これを行う場合は、 '.'を改行文字に一致させるようにしてください。 – Keng

関連する問題