0

文字列の先頭に 00 が 2 つ含まれる数字を検索し、それを 1 つの 0 に置き換える正規表現パターンを作成しようとしています。問題は、括弧内の数字を無視したいのですが、その方法がわかりません。これを行う。

たとえば、次の文字列を使用します。

Somewhere 001 (2009)

戻りたい:

Somewhere 01 (2009)

[00] を使用して最初の 00 を見つけ、0 に置き換えることで検索できますが、問題は (2009) が (209) になりたくないことです。(209) を (2009) に置き換えることだけを考えましたが、修正しようとしている文字列には有効な (209) が既に含まれている可能性があります。

どんな助けでも大歓迎です!

4

3 に答える 3

2

数字以外の 1 つ (または行頭) を検索し、その後に 2 つのゼロが続き、その後に 1 つ以上の数字が続きます。

([^0-9]|^)00[0-9]+

数値の先頭にゼロが 3 つある場合はどうなりますか? 置換後に何個のゼロが必要ですか? すべての先行ゼロをキャッチして、それらを 1 つだけに置き換えたい場合:

([^0-9]|^)00+[0-9]+
于 2009-12-30T17:15:50.647 に答える
1

理想的には、ネガティブ ルック ビハインドを使用しますが、正規表現エンジンがサポートしていない可能性があります。JavaScriptで行うことは次のとおりです。

string.replace(/(^|[^(\d])00+/g,"$10");

これにより、括弧または別の数字が前にないゼロの文字列が置き換えられます。[^(\d.]10 進数も扱う場合は、文字クラスを に変更します。

于 2009-12-30T17:30:04.017 に答える
0
?Regex.Replace("Somewhere 001 (2009)", " 00([0-9]+) ", " 0$1 ")
"Somewhere 01 (2009)"
于 2009-12-30T17:22:58.353 に答える