如何使用正则表达式删除两个字符之间的字符串

时间:2015-07-23 05:13:34

标签: java regex

我有一个如下所示的字符串

{A:'XYZ'|B:‘123'}.[{C:‘pqr'}.{p:'a'}].{I1:'t123'|I2:'345'}

我想删除'之间的所有字符。和'并希望得到像

这样的最终结果
{A:|B:}.[{C:}.{p:}].{I1:|I2:}

我正在使用下面的regx

input.replaceAll("'.*?'", "");

但无法获得理想的结果。有人能指出我在这里缺少什么吗?

3 个答案:

答案 0 :(得分:3)

好像你的输入包含重音单引号。

input.replaceAll("[‘'].*?'", "");

答案 1 :(得分:0)

(?<=:).*?(?=[|}])

您可以在这里使用lookarounds。这样您就不必担心所有类型的报价及其组合。请参阅演示。

https://regex101.com/r/uK9cD8/2

这基本上会删除从:到第一个|}的所有内容。这样您就可以实现自己的目标,而无需关心:和{{1}之间的内容}

答案 2 :(得分:0)

你在做什么:'.*?'

让我们看看有什么不对。应该非常小心地使用符号“.”,并且仅在需要时使用。在你的情况下,“.”也会消耗你不喜欢的字符。

根据模式,我们首先可以有'。所以我们可以(‘|')。接下来我们要查找字母或数字:[a-zA-Z1-9]*。最后,与'相同。 我们有:

('|‘)[a-zA-Z1-9]+'

https://regex101.com/r/uK9cD8/4