我有一个RegExp
/h.*e.*l.*l.*o.*/i
我有一段正在运行。
Hey look at that lion!
结果是:
answer[0] = Hey look at that lion!
answer[1] = H
answer[2] = e
answer[3] = l
answer[4] = l
answer[5] = o
我想知道我是否能得到这样的结果:
answer[0] = Hey look at that lion!
answer[1] = Hello
通过仅更改我的RegExp。也许使用分组或其他方式?如果这个问题的答案是否定的,那么我还有什么选择?我真的不想把答案循环起来,也不想把它串在一起,但如果这是唯一的方法,我想我会这样做的。
您的表达式很好。你只需要执行一次,然后返回一个匹配项。那很好。
请查看此处以供参考:http://regex101.com/r/jU3zU2
如果您愿意的话,您可以像我在示例中那样使用backreferences来获取整个数据。
但是,您希望返回"hello",这是正则表达式中的内容。。。所以呃。。什么
使用正则表达式是不可能的。使用正则表达式时不可更改的规则之一是,每个字符只能匹配一次。这意味着你不能返回整句和其中的某些部分。
示例:
"abc".match(/a|b|c|(abc)/g)
最后一个abc
组虽然会匹配,但永远不会匹配,因为abc的字符与a|b|c
的早期表达式匹配
我不知道你想通过在regexp中对结果进行硬编码来实现什么,我认为你的真实代码应该做其他事情。如果没有,只需将"hello"赋给一个变量即可。
array_shift($answer);
$answer = implode('',$answer);
array_shift将从结果数组中删除包含整个字符串的元素,然后内爆将它们全部聚集在一个字符串中。