我得到一个这样的字符串: CSF @ asomedatahere @ iiwin @ hnotwhatIwant
我想替换出现在@i和@h之间的字符串(h可以是任何字符)。这就是我到目前为止我觉得我很接近,但是,在这个@idata模式之后可能并不总是有@CHAR。
(?<=@i)(.*)(?=@.*)
我希望它可以为那个可选择不在那里工作。正如在下面的链接中可以看到的,它适用于第一种情况而不是第二种情况。我试过添加'?'最后使最后一部分可选,但这使得它不适用于第一种情况。
以下是一个链接,可以向您显示不起作用的内容:http://fiddle.re/vtvmc
答案 0 :(得分:3)
您需要扩展前瞻以使用输入的结尾:
(?<=@i)(.*?)(?=@.*|$)
这将匹配
iwin@hnotwhatIwant
中CSF@asomedatahere@iiwin@hnotwhatIwant
在iwin@h
CSF@asomedatahere@iiwin@h
{li> iwin
CSF@asomedatahere@iiwin
。