replaceAll
takes as parameter a regular expression.
In regular expressions, you have word boundaries :
(use \b
in a string literal). They're the best way to ensure you're matching a word and not a part of a word : "\bword\b"
But in your case, you can't use word boundaries as you're not looking for a word ([69-3]
isn't a word).
I suggest this :
text=text.replaceAll("(?=\W+|^)"+Pattern.quote("[69-3]")+"(?=\W+|$)", ...
The idea is to match a string end or something that's not a word. I can't ensure this will be the right solution for you though : such a pattern must be tuned knowing the exact complete use case.
Note that if all your keys follow a similar pattern there might be a better solution than to iterate through a dictionary, you might for example use a pattern like "(?=\W+|^)\[\d+\-\d+\](?=\W+|$)"
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…