如何在RegEx中查找特定模式的许多实例?
目前(在PHP)我有以下的正则表达式模式:如何在RegEx中查找特定模式的许多实例?
\[(.*) (.*)=(.*)\]
这符合[DoSomething的限制=真]
最终的结果是,我的代码将解释该字符串,并与任何值替换被编码返回。
不过,我的一些代码需要通过发送给函数的多个变量,例如:
[DoSomething的限制=真otherlimitation =假的sendfile = 1个标题= “你好”]
哪有我在可重复的正则表达式中使(。)=(。)可重复,以便它匹配通过包括第一个(最重要)函数名称发送的每个变量?
下可以为你工作:
\[(.*) ((.*)=(.*))+\]
你也可以用加标志,以取代星号。目前,您的正则表达式将匹配[ =]
作为有效的字符串。
\[(.+) ((.+)=(.+))+\]
看起来,最后的+符号使得PHP中的preg_replace()与任何内容都不匹配。有什么建议么?在正则表达式测试程序中,它似乎工作正常 – user85569 2012-02-21 21:55:26
我并不熟悉'preg_replace()'的怪癖。抱歉。 – 2012-02-22 21:24:32
你应该谷歌为一个现成的用户BBCode库,而不是。 – KingCrunch 2012-02-21 21:41:12
谢谢,我会看看它,但我不想让我的代码负担过重,并使其比我慢,这就是为什么我不喜欢使用笨重的第三方书面的东西。 – user85569 2012-02-21 21:42:39
这就是通常试图用一个盒子取代*。在最好的情况下,它将无法正常工作,在最坏的情况下,你会引入安全问题,其他人已经解决了。 – KingCrunch 2012-02-22 07:25:52