正则表达式中不分组

5 javascript regex

所以我知道这[^A-Za-z]会匹配任何非字母的字符。

有什么办法可以在团体中做到这一点吗?例如:(?^:&)- 将匹配任何不是该序列的字符序列&

注意:正如Mark Reed指出的那样,匹配空字符串是没有意义的,因为空字符串是不是序列的字符序列,所以我希望正则表达式匹配尽可能多的字符

例如:

匹配中将Ben & Jerry'sBen and (请注意,前后的 Jerry's空格也会被捕获。BenJerry's

注意:如果可能,请不要使用后视,因为我将在 JS 脚本中使用正则表达式,而 Javascript 不支持后视。

Wik*_*żew 4

您需要的是一个匹配替代项的正则表达式,并且只会将最后一个替代项捕获到第 1 组中,该替代项将呈现一个调和的贪婪标记(或一个展开版本以获得更好的性能 - 如果您只有 2 或 3 个):

&|((?:(?!&)[\s\S])+)
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示展开版本 -&|([^&]*(?:&(?!amp;)[^&]*)*)

图案:

  • &- 匹配&实体
  • |- 或者
  • ((?:(?!&)[\s\S])+)- 将不是序列起点的任何文本块(1 个以上字符)匹配并捕获到组 1 中&。由于它是针对 JS 的,因此您需要一个[\s\S](或) 来匹配包括换行符在内的[^]任何字符。否则,请使用(如果您只想匹配lines)。.

&|((?:(?!&)[\s\S])+)
Run Code Online (Sandbox Code Playgroud)