请先看看我的字符串:
$a = "[ child : parent ]";
我如何检测到模式是:
[(optional space)word or character(optional space) : (optional space)word or character(optional space)]
答案 0 :(得分:2)
你可以在PHP中看到如下:
您的正则表达式为/\[ *\w+ *: *\w+ *]/
您可以编写看起来像这样的代码来查看它是否匹配。
if (preg_match('/regex/', $string)) {
// do things
}
正则表达式的说明
\
)因为
[
在正则表达式中具有特殊含义。反斜杠
防止使用它的特殊含义。*
)匹配前一个字符表达式的0或更多。在这
case,它匹配0或更多空格。如果你反而使用了
表达式\s*
,它将匹配0或更多的空格字符
(空格,标签,换行符)。最后,如果你想让它匹配0或1
在上一个字符中,您可以使用?
代替*
。+
)匹配前一个字符表达式中的一个或多个。 \w
字符表达式与字母,数字或下划线匹配。如果您不希望下划线匹配,则应使用字符类。例如,您可以使用[A-Za-z0-9]
。您可以在http://www.regular-expressions.info和http://www.regular-expressions.info/php.html
找到有关正则表达式的更多信息答案 1 :(得分:1)
答案 2 :(得分:1)
使用此正则表达式\[\s*\w+\s*:\s*\w+\s*\]
答案 3 :(得分:1)
我可能会这样做
preg_match('/^\[\s?\w+\s+:\s+\w+\s?\]$/', $string)
答案 4 :(得分:1)
从您的示例文字中我会说你的意思是人类词而不是\w
正则表达词
preg_match('/\[ ?([a-z]+) ?: ?([a-z]+) ?\]/i', $a, $matches);
解释演示:http://regex101.com/r/hB2oV9
$matches
将保存这两个值,使用var_dump($matches);