php 正则表达式查找字符串的一部分
php regex find part of string
我试图在花括号内找到一个可以以多种形式出现的字符串。
即
在下面的字符串中,我正在搜索单词 Link
asdasd{Link1111:TAG}\r\n {TAG:Link2sds}
我正在使用以下命令:$pattern = "/{(Link.*?)}|{(.*Link.*?)}/";
结果是:
{array} [3]
0 => {array} [2]
0 = "{Link1:TAG}"
1 = "{TAG:Link2}"
1 = {array} [2]
0 = "Link1:TAG"
1 = ""
2 = {array} [2]
0 = ""
1 = "TAG:Link2"
我只期待第一个没有花括号的数组...我缺少正则表达式的什么?
谢谢
preg_match_all
是全局的,会找到所有匹配项。如果你只想找到它一次,请使用 preg_match
.
您当前示例中的 0
索引是所有匹配项。 1
是第一个捕获组 Link.*?
,2
是您的第二个捕获组 .*Link.*?
。
只需使用 /{(.*?Link.*?)}/
,您的匹配项将在索引 1
中
<?php
$str = "asdasd{Link1111:TAG}\r\n {TAG:Link2sds}";
$pattern = "/{(.*?Link.*?)}/";
preg_match_all($pattern, $str, $matches);
print_r($matches[1]);
你的eval
我试图在花括号内找到一个可以以多种形式出现的字符串。
即 在下面的字符串中,我正在搜索单词 Link
asdasd{Link1111:TAG}\r\n {TAG:Link2sds}
我正在使用以下命令:$pattern = "/{(Link.*?)}|{(.*Link.*?)}/";
结果是:
{array} [3]
0 => {array} [2]
0 = "{Link1:TAG}"
1 = "{TAG:Link2}"
1 = {array} [2]
0 = "Link1:TAG"
1 = ""
2 = {array} [2]
0 = ""
1 = "TAG:Link2"
我只期待第一个没有花括号的数组...我缺少正则表达式的什么? 谢谢
preg_match_all
是全局的,会找到所有匹配项。如果你只想找到它一次,请使用 preg_match
.
您当前示例中的 0
索引是所有匹配项。 1
是第一个捕获组 Link.*?
,2
是您的第二个捕获组 .*Link.*?
。
只需使用 /{(.*?Link.*?)}/
,您的匹配项将在索引 1
<?php
$str = "asdasd{Link1111:TAG}\r\n {TAG:Link2sds}";
$pattern = "/{(.*?Link.*?)}/";
preg_match_all($pattern, $str, $matches);
print_r($matches[1]);
你的eval