正则表达式替换字符的实例,但不在括号内

时间:2012-04-20 02:04:43

标签: java regex

我在正在尝试创建的正则表达式中需要一些帮助,我通常对这些很好但是这个让我卡住了......

我需要使用\ d替换字符串中的数字9(创建一个新的正则表达式)。这些是可以预期的一些示例字符串:

X(29)

9(5)

99

X(29)V999S

现在,在您回答太快之前,我们一定不要触及方括号中的数字...... 我在这里看了几个其他的答案,这个解决方案可能有些东西,但我似乎无法适应它 - Regex for splitting a string using space when not surrounded by single or double quotes

到目前为止,我已经提出了

line.replaceAll("[^(\\d)]??9[^)]??", "\\d");

给了我

X(2\d)

\d(5)

\d\d

X(2\d)V\d\d\dS

任何人都有任何想法。

2 个答案:

答案 0 :(得分:2)

鉴于你的规则很简单,但很难用正则表达式实现,为什么不自己动手呢?迭代字符串并创建一个新的字符串,跟踪状态(括号或外部)。

百里

答案 1 :(得分:2)

这个怎么样?

(?!\([^\(]*)9(?![^\(]*\))