Regex在第二个“中获取表达式”&引用;

Regex在第二个“中获取表达式”&引用;,regex,groovy,Regex,Groovy,我有一条这样的线 20130215诸如此类的adflkjas aaa=“12321343432”sdflkjsfdd bbb=“A1-12345” 我需要提取第二个引号之间的值。我该怎么做 这是在groovy中。您要查找的正则表达式是/^\d{8}.*=“.*.*.*.*=”(.*)”.*/ 如果您可以保证不会单独出现“,则可以使用/^\d{8}[^”]*=“[^”]*“[^”]*[^”]*=”([^”]*)“[^”]*/ 如果您可以进一步限制.*s,这可能会有所帮助,但由于您在允许的输入方面非

我有一条这样的线

20130215诸如此类的adflkjas aaa=“12321343432”sdflkjsfdd bbb=“A1-12345”

我需要提取第二个引号之间的值。我该怎么做


这是在groovy中。

您要查找的正则表达式是
/^\d{8}.*=“.*.*.*.*=”(.*)”.*/

如果您可以保证不会单独出现
,则可以使用
/^\d{8}[^”]*=“[^”]*“[^”]*[^”]*=”([^”]*)“[^”]*/

如果您可以进一步限制.*s,这可能会有所帮助,但由于您在允许的输入方面非常含糊,我希望这就足够了。这假设您总是以8位数的日期开头

Groovy可能需要一些额外的转义(可能在双引号上)。您可能还需要使用Groovy进行双转义,我已经有一段时间没有在那里玩了。我相信您的匹配器将拥有整个字符串,然后是捕获的值

如果您想要的是Groovy中正则表达式捕获的语义,我建议您


这里有一些很好的例子。

这将提取第二对引号的内容:

 ($extracted = $line) =~ s/^[^"]*"[^"]*"[^"]*"([^"]*)"/$1/
行的开头,后跟零个或多个not quotes,后跟一个quote,后跟零个或多个not quotes,后跟一个quote,后跟一个quote(零个或多个not quotes)。$1提取(组)


这不是Groovy正则表达式的习惯用法(它更像Perl语言),但该模式应该在Groovy中工作。

它是否总是以
bbb=
作为前缀?另外,不要忘记向我们展示您尝试过的内容。什么语言/库/工具/等等?第二个引号将始终位于字符串的末尾?我不确定,这是我要分析的外部程序的日志文件,我不知道它的行为,我有一个s地狱脚本有这样的逻辑(它从第二对引号之间获取值),所以这就是我试图模仿的