如何修改正则表达式只匹配字符串中的特定数字?

时间:2015-01-23 10:35:56

标签: php regex

以下是我的代码,使用标记替换所有提及的各自的个人资料链接。

现在我需要从这个字符串中删除特定的提及。

说我有字符串"你们好几个人??? ... @@ [Sam Thomas:10181] @@ [Jack Daniel:11074]"

现在我想从这个字符串中删除@@ [Sam Thomas:10181],使用他的id,这将是唯一的一个,即10181 ..任何正则表达式,使用上面指定的id识别整个模式。

echo 'USER TAG NAME WITH PROFILE LINK<br/><hr>';
$text = "hi how are you guys???... @@[Sam Thomas:10181] @@[Jack Daniel:11074] @@[Paul Walker:11043] ";
echo 'REGULAR EXPRESSION USED: <b>/@@\[([^:]*):(\d*)\]/</b>';
echo '<br/>Sample Text<br/>';
echo $text.'<br/>';
$pattern = "/@@\[([^:]*):(\d*)\]/";
$matches = array();
preg_match_all($pattern, $text, $matches);
echo '<pre>';
print_r($matches);
echo '</pre>';
echo '<hr>';
$output = preg_replace($pattern, "<a href=\"http://localhost/$2\" class=\"tooltip\">$1</a>", $text);
echo 'FINAL OUTPUT<br/><hr>';
echo $output;
echo '<br/>==================================================================================<br/>';

1 个答案:

答案 0 :(得分:1)

\d*匹配任何数字 - 如果您想将匹配限制为特定数字,请将其替换为该数字:

$pattern = "/@@\[([^:]*):(10181)\]/";

如果您希望数字有所不同,可以使用alternation

$pattern = "/@@\[([^:]*):(10181|11074)\]/";