将嵌入的@符号替换为其后的子字

时间:2013-03-17 22:51:27

标签: php replace

我有一项任务要求我将@符号终止的字符模式替换为紧随其后的子字。因此,例如,给定presymbol@postsymbol,替换将产生postsymbol

我目前正在使用此模式'/(^|\s)@([a-z0-9_]+)/'进行替换,但我的测试人员给了我反馈,“在@之前”会导致替换失败。

如何修复此模式以正确输出。与'/(^|\s)(@|"@)([a-z0-9_]+)/'类似的东西?

1 个答案:

答案 0 :(得分:1)

/(^|\s)(@|"@)([a-z0-9_]+)/

如果您添加新的match group,则$2会变为$3

你应该做的只是让"可选:

...."?@.... 

或使用非捕获匹配组:

....(?:@|"@)....

或者可能把它作为第一组的另一种选择:

....(^|\s|")....