我正在寻找一个解决方案,以查找:[和]是否包含了-char。
我有一种语法,可以在模板中定义具有相应值的键。语法由以下内容展开:-char以标识键,但是:-char如果在括号内,也应该是有效的。基本上我的样本/案例就像:
:key1[value]:key2[this:value should work too]
。
我正在寻找一种方法来查找:-char是否在括号内。我已经开始写出一个程序来解决这个问题,但在写作过程中的某个地方,我心中的电子脉冲说'正则表达式'正则表达式'。但我对他们并不熟悉。有人可以帮助我吗?
P.S。如果你正在低估这个问题,至少告诉我为什么你认为这是一个糟糕的问题。在我看来,这是一个正确的问题,我正在寻求帮助。
答案 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