我在php中有这个preg_replace几乎正确地将每个以'exploit'开头的单词替换为链接:
preg_replace('#[\b]?(exploit([^ ]*))[\b]?#', '<a>$1</a>', 'My exploits are exploitable.');
我明白了:
My <a>exploits</a> are <a>exploitable.</a>
哪一半是错误的,不应该在第二个单词上链接。我知道我需要将上面的部分[^]替换为像[^ \ b]这样的东西,但它不起作用。
我知道我可以随时做,[^。]但它只能用于以空格和句号结尾的单词,而不是逗号。
答案 0 :(得分:0)
\b(exploit[a-zA-Z]*)
应该可以解决问题。
旁白:这个网站非常方便您尝试使用preg_replace:http://www.fullonrobotchubby.co.uk/random/preg_tester/preg_tester.php
答案 1 :(得分:0)
\bexploit(\w*)\b
- 更简单......
玩得开心
修改强>
如果您只想要字母,请注释:
/\bexploit([a-z]*)\b/i
答案 2 :(得分:0)
如果你想处理unicode,你可以这样做:
preg_replace('#\b(exploit\pL*)#u', '<a>$1</a>', 'My exploits are exploitable.');
\pL
代表任何字母。