2012-04-28 37 views
2

对不起格式不好的标题,但我不知道如何更好地解释这个问题。举一个例子:我想匹配使用匹配组的东西,但我也想使用该组内的组,因为我需要它们进行匹配,但我不希望这些内部组显示为使用PHP的结果preg_match。下面是这样一个查询的例子:是否可以在正则表达式中使用组而不显示结果?

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

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

感谢

回答

7

你必须使用non-capturing subpatterns

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

适用于您正则表达式,就变成:

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

+1绝对正是我一直在寻找,万分感谢 – Hubro 2012-04-28 12:43:55

相关问题