替换某些符号之间的文本

时间:2014-01-22 14:04:03

标签: java regex replace

我得到一个这样的字符串: CSF @ asomedatahere @ iiwin @ hnotwhatIwant

我想替换出现在@i和@h之间的字符串(h可以是任何字符)。这就是我到目前为止我觉得我很接近,但是,在这个@idata模式之后可能并不总是有@CHAR。

 (?<=@i)(.*)(?=@.*)

我希望它可以为那个可选择不在那里工作。正如在下面的链接中可以看到的,它适用于第一种情况而不是第二种情况。我试过添加'?'最后使最后一部分可选,但这使得它不适用于第一种情况。

以下是一个链接,可以向您显示不起作用的内容:http://fiddle.re/vtvmc

1 个答案:

答案 0 :(得分:3)

您需要扩展前瞻以使用输入的结尾:

(?<=@i)(.*?)(?=@.*|$)

这将匹配

    iwin@hnotwhatIwant
  • CSF@asomedatahere@iiwin@hnotwhatIwantiwin@h
  • CSF@asomedatahere@iiwin@h {li> iwin CSF@asomedatahere@iiwin