我有一项任务要求我将@
符号终止的字符模式替换为紧随其后的子字。因此,例如,给定presymbol@postsymbol
,替换将产生postsymbol
。
我目前正在使用此模式'/(^|\s)@([a-z0-9_]+)/'
进行替换,但我的测试人员给了我反馈,“在@之前”会导致替换失败。
如何修复此模式以正确输出。与'/(^|\s)(@|"@)([a-z0-9_]+)/'
类似的东西?
答案 0 :(得分:1)
/(^|\s)(@|"@)([a-z0-9_]+)/
如果您添加新的match group,则$2
会变为$3
。
你应该做的只是让"
可选:
...."?@....
或使用非捕获匹配组:
....(?:@|"@)....
或者可能把它作为第一组的另一种选择:
....(^|\s|")....