我得到这样的字符串:
CSF @ asomedatahere @ iiwin @ hnotwhatIwant
我想替换@i和@h(h可以是任何字符)之间存在的字符串。这是我到目前为止所拥有的,我觉得我已经接近了,但是,在此@idata模式之后,可能并不总是有@CHAR。
(?<=@i)(.*)(?=@.*)
我希望它可以选择性地不存在。在下面的链接中可以看到,它适用于第一种情况,不适用于第二种情况。我尝试添加“?”最后将最后一部分设为可选,但这不适用于第一种情况。
以下是一个链接,可以主动向您显示不起作用的内容:http://fiddle.re/vtvmc
最佳答案
您还需要扩展前瞻以使用输入的结尾:
(?<=@i)(.*?)(?=@.*|$)
这将匹配
iwin@hnotwhatIwant
中的CSF@asomedatahere@iiwin@hnotwhatIwant
iwin@h
中的CSF@asomedatahere@iiwin@h
iwin
中的CSF@asomedatahere@iiwin
。