2016-12-13 4 views
1

この正確なケースはどこにも見つかりませんでした。似たような例がたくさんありますが、何らかの理由で鉱山が機能しません。達成しようとしIf-then regex:パターンが1行で一致すると、別の正規表現に一致します

:AddMemberを含む各ライン内 を、私はこれまでのところ得ている研究の多くが後行

の最後に第二重引用符の後からすべてのテキストを一致:

(?(?=.*\b(AddMember)\b.*\n)[^\"]+[^\"]+\n)

.*\b(AddMember)\b.*\nは:第二の引用文字後に正しく一致します

[^\"]+[^\"]+\nがすべて正しい行にマッチします は、この構造

(?(?=ifthis)thenthis)

であれば、それらを一緒にしようとしましたが、何も一致していません。

例文字列:

foo.AddMember("bar"); 
fu.AddMember("bur", test); 

は間違っているものにのような非常に好奇心

); 
, test); 

を一致させる必要があります!助けてくれてありがとう。

+0

私は答えとして上記のコメントを指名したいと思います!ありがとう! – user3300027

+0

私は答えとしてコメントを入れました。問題が解決した場合は、[回答を受け入れる]ことができます(http://meta.stackexchange.com/a/5235/295560)。うれしかったよ! –

答えて

0

あなたはPHP/PCREを使用しているようです。なぜあなたは条件付きが必要ですか?ただ、

\bAddMember\b[^"]*"[^"]*"\K.* 

See demo at regex101(報告された試合の使用\K to reset始まり)と一致。
use a capture group for extractionほとんどの正規表現のフレーバーで動作します。

0

このパターンは、あなたの例で動作します:

(?<=\bAddMember\b[^"]*"[^"]*")(.*) 

は、これは先読みアサーションを使用しているときに、実際の試合の前に「」AddMemberを行いたい場合、戻り読みアサーションを使用しています。

いいえお返事

+0

それはうまくいくように聞こえますが、私が使用しているテスターは、* "lookbehindの内側にある量指定子では固定幅になりません"というエラーをポストします。 – user3300027

+0

(?<= \ bAddMember \ b [^ "] )(。*)は最初の引用符の後のすべてで正常にマッチしますので、量指定子は必要ではないかもしれませんが、ルックバックに2番目の引用符を含めるための回避策を見つける必要があります。 – user3300027

関連する問題