2

私が作成しようとしている正規表現で少し支援が必要です。私は通常これらにかなり優れていますが、これは私を立ち往生させます...

文字列の数字9をその場で\dに置き換える必要があります(新しい正規表現を作成します)。これらは、期待できる文字列の例です。

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 に答える