将正则表达式与整个字符串匹配

时间:2010-11-30 04:03:31

标签: php regex

我有点紧张,我需要将整个字符串与正则表达式匹配,而不是查找字符串中是否存在模式。

假设我有一个正则表达式

/\\^^\\w+\\$^/

我想要的是代码将运行各种字符串,将字符串与正则表达式进行比较,并在字符串以^开头和结尾时执行某些任务。

实施例

^ hello world ^ 是匹配

my ^ hello world ^ 不应该是匹配

php函数 preg_match 匹配两个结果

任何线索???

6 个答案:

答案 0 :(得分:3)

锚定两端。

/^...$/

答案 1 :(得分:3)

这是一种完成工作的方法:

$strs = array('^hello world^', 'my ^hello world^');
foreach($strs as $str) {
    echo $str, preg_match('/^\^.*\^$/', $str) ? "\tmatch\n" : "\tdoesn't match\n";
}

输出:

^hello world^   match
my ^hello world^        doesn't match

答案 2 :(得分:2)

实际上,^\^\w+\^$与“^ hello world ^”不匹配,因为那里有两个单词;正则表达式只寻找由“^”包围的单个单词。

您要找的是:^\^.*\^$ 这将匹配“^^”,“^ hello world ^”,“^一个很长的字符串^”等,而不匹配“hello ^ world ^”。

答案 3 :(得分:1)

您可以使用正则表达式:

^\^[\w\s]+\^$

^是一个正则表达式元字符,用作起始锚点。要匹配文字^,您需要将其转义为\^

所以我们有:

  • ^:启动锚点
  • \^:文字^
  • [\w\s]+:空格分隔的单词。
  • \^:文字^
  • $:结束锚。

Ideone Link

答案 4 :(得分:0)

尝试

/^\^\s*(\w+\s*)+\^$/

答案 5 :(得分:0)

另一种模式是:^\^[^\^]*\^$如果你想匹配“^ hello world ^”而不是“hello ^ world ^”,而\^[^\^]*\^如果你想匹配“^ hello world ^”和世界“hello ^ world ^”字符串。

For Will:^\^.*\^$这场比赛也是“^ hello ^ wo ^ rld ^”我认为不正确。