如何在RegEx中查找特定模式的许多实例?

问题描述:

目前(在PHP)我有以下的正则表达式模式:如何在RegEx中查找特定模式的许多实例?

\[(.*) (.*)=(.*)\] 

这符合[DoSomething的限制=真]

最终的结果是,我的代码将解释该字符串,并与任何值替换被编码返回。

不过,我的一些代码需要通过发送给函数的多个变量,例如:

[DoSomething的限制=真otherlimitation =假的sendfile = 1个标题= “你好”]

哪有我在可重复的正则表达式中使(。)=(。)可重复,以便它匹配通过包括第一个(最重要)函数名称发送的每个变量?

+0

你应该谷歌为一个现成的用户BBCode库,而不是。 – KingCrunch 2012-02-21 21:41:12

+0

谢谢,我会看看它,但我不想让我的代码负担过重,并使其比我慢,这就是为什么我不喜欢使用笨重的第三方书面的东西。 – user85569 2012-02-21 21:42:39

+1

这就是通常试图用一个盒子取代*。在最好的情况下,它将无法正常工作,在最坏的情况下,你会引入安全问题,其他人已经解决了。 – KingCrunch 2012-02-22 07:25:52

下可以为你工作:

\[(.*) ((.*)=(.*))+\] 

你也可以用加标志,以取代星号。目前,您的正则表达式将匹配[ =]作为有效的字符串。

\[(.+) ((.+)=(.+))+\] 
+0

看起来,最后的+符号使得PHP中的preg_replace()与任何内容都不匹配。有什么建议么?在正则表达式测试程序中,它似乎工作正常 – user85569 2012-02-21 21:55:26

+0

我并不熟悉'preg_replace()'的怪癖。抱歉。 – 2012-02-22 21:24:32