Regex 正则表达式匹配匹配之间的空间,以及匹配?

Regex 正则表达式匹配匹配之间的空间,以及匹配?,regex,Regex,我对正则表达式并不陌生,但我似乎找不到一个坚实的解决方案来匹配匹配之间的剩余空间 例如,我想知道什么是引号,什么不是引号,并对两者都做些事情 获取引号很容易:(\“+?\”。+?”)=quoteMatch 但是,让另一个比赛小组选择其他所有比赛项目并不重要 我得到的最接近的是quoteMatch+'|(.)'。这会将“我的报价”组与“其他所有内容”组分开,但不会将“其他”组分组在一起 尝试quoteMatch+'|(.+)'将所有内容都选择在一起,然后quoteMatch+'|(.+)'使我后退

我对正则表达式并不陌生,但我似乎找不到一个坚实的解决方案来匹配匹配之间的剩余空间

例如,我想知道什么是引号,什么不是引号,并对两者都做些事情

获取引号很容易:
(\“+?\”。+?”)=quoteMatch

但是,让另一个比赛小组选择其他所有比赛项目并不重要

我得到的最接近的是
quoteMatch+'|(.)'
。这会将“我的报价”组与“其他所有内容”组分开,但不会将“其他”组分组在一起

尝试
quoteMatch+'|(.+)'
将所有内容都选择在一起,然后
quoteMatch+'|(.+)'
使我后退了一步

我想我需要找到一种方法使第一个匹配比第二个匹配更贪婪,但我所做的任何使它贪婪的事情都会使它开始接管多个引号和介于两者之间的东西(即match=
“quote1”和“quote2”之间的东西)

我也研究过使用split函数,但它并没有返回split是什么,也不像我想象的那样有说服力


感谢您的帮助。

将选择其他角色的匹配项移动到捕获组的内部,作为替代:

(\".+?\"|'.+?'|.+?(?=["']|$))
然后,您可以使用正向前瞻,例如
(?=[“']|$)
,以便在引号或行尾之前进行匹配

在此过程中,输入:

前引号“quote1”中间引号“quote2”后引号

将返回:

(before quotes ), ("quote1"), ( in between quotes ), ("quote2"), ( after quotes)

作为旁注,您还可以通过使用反向引用关闭报价来组合前两种备选方案:

((['"]).+?\2|.+?(?=["']|$))

是的。谢谢。这花了我一分钟的时间才弄明白,但现在我明白了,这是超放射性的。我感觉如果我不只是寻找引号,事情会变得不那么美好,也许少量的重复可以避免,但是谢谢!