2010-02-18 195 views
0

所以我是新来正则表达式....我什么也没有意识到这是...正则表达式的逻辑括号...?

我怎样才能搜索一个特定的正则表达式每次在一个字符串,即匹配所有'测试'在给定的字符串....我可以使用什么作为合乎逻辑的禁忌?

/(test)*/ 

这会返回几个匹配/反向引用,并且似乎不是用于逻辑分组/顺序执行。

+0

我不明白你在问什么。你能举一个例子,这会有用吗? – wallyk 2010-02-18 20:14:43

+0

它不是很清楚你想要什么样的结果。你能发布一个样本输入字符串和所需的输出吗? – Juliet 2010-02-18 20:15:06

+0

您是否试图抓住字符串中'test'的所有实例,以便您可以用其他方式替换它们?你能详细说明你的目标吗? – 2010-02-18 20:15:08

回答

4

要创建的匹配组停止括号,用?:

/(?:test)*/ 

这只是比赛的“测试”多次连续启动它们,而不会有任何保存匹配的字符串。

+0

让我问一下,在逻辑括号的作用下,是否经常需要(?:)? – Zombies 2010-02-18 20:40:04

+0

值得注意的是,这个构造特定于Perl(和大多数语言可以的PCRE相关系统)。在grep,awk和其他POSIX风格的正则表达式环境中不起作用。 – 2010-02-18 20:40:46

1

您的正则表达式仅指定连续出现的测试。对于所有人来说,你通常需要给我们一面旗帜来表明你想要匹配所有的事件,而不仅仅是第一次。在大多数语言中,这通过使用'g'标志来指示。

/test/g 
+0

我对此很新,谢谢....另外,知道是战斗的一半。 – Zombies 2010-02-18 20:41:25