我有一个如下所示的字符串
{A:'XYZ'|B:‘123'}.[{C:‘pqr'}.{p:'a'}].{I1:'t123'|I2:'345'}
我想删除'之间的所有字符。和'并希望得到像
这样的最终结果{A:|B:}.[{C:}.{p:}].{I1:|I2:}
我正在使用下面的regx
input.replaceAll("'.*?'", "");
但无法获得理想的结果。有人能指出我在这里缺少什么吗?
答案 0 :(得分:3)
好像你的输入包含重音单引号。
input.replaceAll("[‘'].*?'", "");
答案 1 :(得分:0)
(?<=:).*?(?=[|}])
您可以在这里使用lookarounds
。这样您就不必担心所有类型的报价及其组合。请参阅演示。
https://regex101.com/r/uK9cD8/2
这基本上会删除从:
到第一个|
或}
的所有内容。这样您就可以实现自己的目标,而无需关心:
和{{1}之间的内容}
答案 2 :(得分:0)
你在做什么:'.*?'
让我们看看有什么不对。应该非常小心地使用符号“.
”,并且仅在需要时使用。在你的情况下,“.
”也会消耗你不喜欢的字符。
根据模式,我们首先可以有‘
或'
。所以我们可以(‘|')
。接下来我们要查找字母或数字:[a-zA-Z1-9]*
。最后,与'
相同。
我们有:
('|‘)[a-zA-Z1-9]+'