-1

我正在寻找一种解决方案来确定 :-char 是否被 [ 和 ] 包围。

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

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

我正在寻找一种方法来查找 :-char 是否在括号内。我已经开始写出一个程序来解决这个问题,但是在写下一个电子脉冲的过程中,我脑海中的某个地方说“正则表达式..正则表达式”。但我对他们很陌生。有人可以帮我吗?

Ps 如果你对这个问题投了反对票,至少告诉我为什么你认为这是一个不好的问题。在我看来,这是一个正确的问题,我正在寻求帮助。

4

3 回答 3

3

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

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

您需要做的是匹配之间的所有内容[,因此您必须告诉正则表达式您想要匹配所有不是这样的东西,]而不是使用....*][^\]]

您可以查看演示以获取更多说明。

于 2012-11-26T09:07:12.223 回答
1
preg_match('~\[[^\]]*:~', $str)

如果括号内1有一个字符,这将返回。:正则表达式假定括号总是成对的。

于 2012-11-26T09:04:57.050 回答
1

要查找 :-char 是否在 [] 内,只需在您的正则表达式中添加以下内容:

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

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

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

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

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

于 2012-11-26T09:09:03.000 回答