嗨,我的RegEx'ers同事;)
我正在尝试在每两个引号之间匹配多个文本 这是我的文字:
...random code
someArray[] = ["Come and",
"get me,",
"or fail",
"trying!",
"Yours truly"]
random code...
到目前为止,我设法通过两个模式获得了正确的匹配,并在彼此之后执行:
(?s)someArray\[\].*?=.*?\[(.*?)\]
这将提取两个括号之间的文本,并在结果上,我使用这个:
"(.*?)"
这工作得很好,但我希望将文本放在一个正则表达式中。
非常感谢任何帮助!
答案 0 :(得分:1)
考虑使用\G
。在其帮助下,您可以匹配"(.*?)"
之前的someArray[] = [
或之前的"(.*?)"
匹配(严格来说,严格说来是整个正则表达式的上一场比赛)。然后从所有比赛中抓取第一个捕获组:
(?:(?s).*someArray\[\].*?=.*?\[|\G[^"\]]+)"(.*?)"
演示:https://regex101.com/r/eBQWdU/3
如何从第一个捕获组中获取取决于您使用正则表达式的语言。例如,在PHP中,您可以执行以下操作:
preg_match_all('/(?:(?s).*someArray\[\].*?=.*?\[|\G[^"\]]+)"(.*?)"/', $input, $matches);
$array_items = $matches[1];