找出是否:-char介于[和]之间

时间:2012-11-26 09:00:30

标签: php regex

我正在寻找一个解决方案,以查找:[和]是否包含了-char。

我有一种语法,可以在模板中定义具有相应值的键。语法由以下内容展开:-char以标识键,但是:-char如果在括号内,也应该是有效的。基本上我的样本/案例就像:

:key1[value]:key2[this:value should work too]

我正在寻找一种方法来查找:-char是否在括号内。我已经开始写出一个程序来解决这个问题,但在写作过程中的某个地方,我心中的电子脉冲说'正则表达式'正则表达式'。但我对他们并不熟悉。有人可以帮助我吗?

P.S。如果你正在低估这个问题,至少告诉我为什么你认为这是一个糟糕的问题。在我看来,这是一个正确的问题,我正在寻求帮助。

3 个答案:

答案 0 :(得分:3)

我将向您展示解析此问题的一般方法:DEMO

:(key\d)+\[([^\]]+)\]

您需要做的是匹配[]之间的所有内容,因此您必须告诉正则表达式您希望匹配不是{{1}的所有内容,而不是使用.*所以... ]

您可以看到该演示以获得更多解释。

答案 1 :(得分:1)

preg_match('~\[[^\]]*:~', $str)

如果括号内有1个字符,则会返回:。正则表达式假设括号始终是配对的。

答案 2 :(得分:1)

要查找:-char是否在[]之内,只需输入正则表达式即可:

preg_match('/\[:-char\]/', $string);

这将匹配用[]包装的所有“:--char”。请注意,[]字符是正则表达式模式的一部分,因此应该被转义。 如果你想找到所有“: - char”,但看看它是否有[],那么你去找

preg_match('/(\[)?:-char(\])?/', $string, $var);

然后()中的所有内容的结果将被捕获到$var中。从它的结构你可以判断它是否包裹[]或不是

为了更好地理解正则表达式如何工作,我建议使用标准PHP文档:http://php.net/manual/en/book.pcre.php