If-then regex:如果模式匹配一​​行,则匹配另一个正则表达式

时间:2016-12-13 20:34:53

标签: regex

无法在任何地方找到这个确切的案例。许多类似的例子,但出于某些原因,我的工作并不起作用。

尝试完成: 在包含AddMember的每一行中,匹配第二个引号字符后面的所有文本到行的结尾

经过大量研究,我已经做到了这一点:

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

.*\b(AddMember)\b.*\n:匹配所有正确的行

[^\"]+[^\"]+\n:在第二个引号char后正确匹配

尝试if - 然后将它们与此结构一起

(?(?=ifthis)thenthis)

但并不匹配。

示例字符串:

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

应匹配

);
, test);

对于什么是错误非常好奇!谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

此模式适用于您的示例:

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

这使用了一个lookbehind断言,这意味着你想要AddMember&#34;&#34;在实际匹配之前,你使用了一个先行断言。

干杯

答案 1 :(得分:0)

听起来像你正在使用PHP / PCRE。你为什么需要条件?只需匹配

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

See demo at regex101(使用\K to reset报告的匹配开头。) 或者只是use a capture group for extraction,它适用于大多数正则表达式。