【发布时间】:2020-12-07 16:09:08
【问题描述】:
我正在尝试对以下字符串执行正则表达式:
"sonoma wildfires"sonoma and (wild* or stratus or kincade)sonoma and (wild or "stratus kincade")
... 这样我就得到了以下匹配项:
['"sonoma wildfires"']['sonoma', 'and', '(wild* or stratus or kincade)']['sonoma', 'and', '(wild* or "stratus or kincade")']
我正在使用以下正则表达式:
/\w+\*?|["(][^()"]+[")]/g
前两个字符串匹配正确。
但是使用第三个字符串,我得到了这个匹配:
['sonoma', 'and', '(wild* or "', 'stratus', 'kincade']
...而我想要的是:
['sonoma', 'and', '(wild* or "stratus or kincade")']
它匹配第一个内括号,但也抓住了第一个内引号。我一直在用消极和积极的前瞻性调整正则表达式,但我无法弄清楚。
/\w+\*?|["(](?<!\()[^()"]+(?!\))[")]/g
【问题讨论】:
-
我认为我遗漏了一些细微差别,但
/\(.*?\)|".*?"|\w+\*?/g与您的示例一起使用
标签: javascript regex regex-lookarounds regex-group