正则表达的强词

时间:2012-11-10 00:55:41

标签: php regex

我有这个正则表达式:

<?PHP
$test = 'this is a #test';
$regex = "#(\#.)#i";
$test = preg_replace($regex, '<strong>$1</strong>', $test);
echo $test;
?>

我希望#之后的单词很强,但我只有#t强,有人有建议吗? 非常感谢

4 个答案:

答案 0 :(得分:3)

我的建议是这样的 -

$regex = "/#(\w+)/i";

\w表示任何word character。我还使用+ quantifier表示我们必须在哈希符号后匹配至少一个单词字符。我假设我们不希望只有哈希符号为<strong>我也从捕获组中删除了哈希符号(#),因为我不太确定你希望在包装后保留该字符与<strong>

最后一点我会告诉你的是,如果你发现自己在正则表达式中使用delimiter,你可能会考虑将其改为你不会正常使用的东西。在你的情况下你必须逃避哈希标志,但在我的例子中,我已经将分隔符更改为斜杠。它使阅读起来更容易一些:)

答案 1 :(得分:2)

使用+匹配任何一个或多个数字文字。如果您想在*之后添加0个文字,请使用#

   $regex = "#(\#.+)#i";

有关详细信息,请参阅PHP Regex Repetition文档。

答案 2 :(得分:0)

试试这个:

<?PHP
$test = 'this is a #test';
$regex = "#(\#.*)#i";
$test = preg_replace($regex, '<strong>$1</strong>', $test);
echo $test;
?>

问题是。仅匹配单个字符。

答案 3 :(得分:-1)

您需要设置要保存的符号数量:

$regex = "#(\#.{4})#i";