2

抱歉标题格式错误,但我不知道如何更好地解释这个问题。举个例子:我想使用匹配组来匹配某些东西,但我也想在该组内使用组,因为我需要它们进行匹配,但我不希望这些内部组使用 PHP 的结果显示preg_match. 以下是此类查询的示例:

(([^0-9^\n]+)*([^0-9^\n^ ]+))

它将匹配包含空格但没有任何尾随空格的句子。如您所见,它使用一个外部组(我想要的结果)和其中的两个组。我是否可以将这些内部组替换为可以完成相同工作的东西,或者以某种方式将它们标记为与结果数据无关?

谢谢

4

1 回答 1

7

您必须使用非捕获子模式

简单的括号满足两个功能这一事实并不总是有帮助的。经常需要分组子模式而没有捕获要求。如果左括号后跟“?:”,则子模式不进行任何捕获,并且在计算任何后续捕获子模式的数量时不计算在内。

应用于您的正则表达式,它变为:

/((?:[^0-9^\n]+)*(?:[^0-9^\n^ ]+))/
于 2012-04-28T10:26:50.013 回答