我有一个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。也许使用分组或其他什么?如果这个问题的答案是否定的,那么我的其他选择是什么?我真的不想循环回答并将它串在一起,但如果这是唯一的方法,那么我会像我想的那样做。
答案 0 :(得分:1)
你的表情很好。你只是执行一次并返回一个匹配。太好了。
点击此处查看:http://regex101.com/r/jU3zU2
如果您愿意,可以使用示例中的反向引用来获取整个数据。
但是,你想要返回“hello”,这就是你在正则表达式中所拥有的......所以呃..什么?
答案 1 :(得分:0)
array_shift($answer);
$answer = implode('',$answer);
array_shift将从结果数组中删除包含整个字符串的元素,然后implode将它们全部组合成一个字符串。
答案 2 :(得分:0)
使用正则表达式是不可能的。使用正则表达式时不可改变的规则之一是每个字符只能匹配一次。这意味着您无法将整个句子和归还其中的某些部分。
示例:
"abc".match(/a|b|c|(abc)/g)
最后一个abc
组虽然匹配,却永远不会匹配,因为abc的字符与a|b|c
我不知道你想要通过在regexp中硬编码你的结果来实现什么,我假设你的真正的代码应该做其他事情。如果没有,只需为变量分配“hello”即可。