2

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

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

X(29)

9(5)

99

X(29)V999S

现在,在您回答得太快之前,我们不能触摸括号中的数字...我在这里查看了其他几个答案,这个解决方案中可能有一些东西,但我似乎无法适应它 -用于拆分的正则表达式不被单引号或双引号包围时使用空格的字符串

到目前为止,我想出了

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

这给了我

X(2\d)

\d(5)

\d\d

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

任何人都有任何想法。

4

2 回答 2

2

鉴于您的规则非常简单,但很难用正则表达式实现,为什么不自己动手呢?遍历字符串并创建一个新的字符串来跟踪状态(在括号中或外面)。

巴里

于 2012-04-20T02:12:31.057 回答
2

那这个呢?

(?!\([^\(]*)9(?![^\(]*\))
于 2012-04-20T02:30:01.703 回答