0

私は文字列を持っています

SUM(Latest#3)

私は正規表現を次のように書きました:-

(?:\((?<n>[^\#]+)\#(?<v>[^\)]+)\))

結果は素晴らしいです:-

n:Latest
v:3

しかし、式を次のように変更すると:-

Sqrt(Sum(Latest#3))

値は次のように変更されています:-

n: sum(Latest)
v: 3

この式で最後の発生までチェックしたい、(つまり、上記の式の目的の出力は次のよう(Sqrt(Sum(Latest#3)))になります:-

n:Latest
v:[3]

私は正規表現が初めてなので助けてください。

4

2 に答える 2

0

(否定された文字クラスにを追加するだけです。

(?:\((?<n>[^(#]+)#(?<v>[^)]+)\))

また、エスケープする必要も、(文字 )クラス#内にある必要もありません。

コメントからのより複雑な例については、次のようにすることができます。

(?:\((?<n>[^(#]+)#(?<v>[^,]+)(?<r>,[^)]*)\))

と置き換えます

([${n}#${v}]${r})

${n}( Expressoが名前付き後方参照に使用する構文に変更する必要がある場合があります。

于 2013-02-11T09:27:22.010 に答える
0

ネストされた角かっこを処理するには、次の正規表現を使用する必要があります。

(?:\((?<n>[^\#(]+)\#(?<v>[^\)]+)\))

于 2013-02-11T09:27:54.320 に答える