我如何编写正则表达式来检查由等号分隔的文本字符串?

时间:2013-02-12 18:14:38

标签: php regex

如何使用正则表达式检查以下文本字符串中的字符:

=== logo ===

我尝试使用正则表达式测试程序,但我可以想出正确的表达式,我试过这个:

 /^[=]{3}$/
  1. 我希望在字符串中搜索文本以3个等号开头的地方。
  2. 在等号内找到字符串或任何其他字符。
  3. 找到3个相同的符号......结束表达。
  4. 提前致谢。

3 个答案:

答案 0 :(得分:4)

尝试使用此正则表达式:

/===[^=]+===/

如果要捕获文本,请将其括在括号中:

/===([^=]+)===/

这是小提琴:http://jsfiddle.net/jufXA/


如果你的文字中可能有相同的符号(但显然小于3)你应该懒得匹配所有东西(这有点慢):

/===(.+?)===/

这是小提琴:http://jsfiddle.net/jufXA/1/

答案 1 :(得分:2)

如此简单......

/===(.+?)===/

example

$test = "here's ===something special===, like ===this=one===";
preg_match_all('/===(.+?)===/', $test, $matches);
var_dump($matches[1]);

懒惰在这里是一种美德:正则表达式引擎无法超越第一个结束分隔符==='。但是,如果没有?,则需要使用否定的字符类(但是,再次,===something=like=this===怎么办?)。

答案 2 :(得分:2)

我更喜欢:

/([=]{3})\s*(.+?)\s*\1/.

这会将文本标记(三个等号)放在开头,然后只使用后向引用作为结尾。它还会修剪你的空间文本,这是你可能想要的。