正则表达式检测结肠和它的两侧?

时间:2013-02-06 14:20:49

标签: php regex

请先看看我的字符串:

$a = "[ child : parent ]";

我如何检测到模式是:

 [(optional space)word or character(optional space) : (optional space)word or character(optional space)]

5 个答案:

答案 0 :(得分:2)

你可以在PHP中看到如下:

您的正则表达式为/\[ *\w+ *: *\w+ *]/

您可以编写看起来像这样的代码来查看它是否匹配。

if (preg_match('/regex/', $string)) {
    // do things
}

正则表达式的说明

  • 在open括号之前有一个反斜杠(\)因为 [在正则表达式中具有特殊含义。反斜杠 防止使用它的特殊含义。
  • 星号(*)匹配前一个字符表达式的0或更多。在这 case,它匹配0或更多空格。如果你反而使用了 表达式\s*,它将匹配0或更多的空格字符 (空格,标签,换行符)。最后,如果你想让它匹配0或1 在上一个字符中,您可以使用?代替*
  • 加号(+)匹配前一个字符表达式中的一个或多个。 \w字符表达式与字母,数字或下划线匹配。如果您不希望下划线匹配,则应使用字符类。例如,您可以使用[A-Za-z0-9]

您可以在http://www.regular-expressions.infohttp://www.regular-expressions.info/php.html

找到有关正则表达式的更多信息

答案 1 :(得分:1)

我不确定特定于php的正则表达式版本,但这应该有效:

\[ ?\w+ ? :  ?\w+ ?\]

Here是我过去用来查找所需模式的正则表达式的网站。

答案 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);

进行测试