RegEx - 如何返回单行答案而不是多行答案

时间:2012-08-27 17:31:38

标签: php javascript regex

我有一个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。也许使用分组或其他什么?如果这个问题的答案是否定的,那么我的其他选择是什么?我真的不想循环回答并将它串在一起,但如果这是唯一的方法,那么我会像我想的那样做。

3 个答案:

答案 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”即可。