我有点紧张,我需要将整个字符串与正则表达式匹配,而不是查找字符串中是否存在模式。
假设我有一个正则表达式
/\\^^\\w+\\$^/
我想要的是代码将运行各种字符串,将字符串与正则表达式进行比较,并在字符串以^开头和结尾时执行某些任务。
实施例
^ hello world ^ 是匹配
my ^ hello world ^ 不应该是匹配
php函数 preg_match 匹配两个结果
任何线索???
答案 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]+
:空格分隔的单词。\^
:文字^
$
:结束锚。答案 4 :(得分:0)
尝试
/^\^\s*(\w+\s*)+\^$/
答案 5 :(得分:0)
另一种模式是:^\^[^\^]*\^$
如果你想匹配“^ hello world ^”而不是“hello ^ world ^”,而\^[^\^]*\^
如果你想匹配“^ hello world ^”和世界“hello ^ world ^”字符串。
For Will:^\^.*\^$
这场比赛也是“^ hello ^ wo ^ rld ^”我认为不正确。