2

文字列「08,09,10,11」があり、「8,9,10,11」が必要です。つまり、先頭のゼロをすべて取り除きます。

正規表現

"08,09,10,11".replaceAll("^0+(?!$)", "")

近いですが、「8,09,10,11」が得られます(つまり、9のゼロは取り除かれません.

必要なことを行うために使用できる正規表現を持っている人はいますか?

4

3 に答える 3

5

これはうまくいきます:

str.replaceAll("^0+", "")

于 2013-05-21T20:37:04.533 に答える
4

私はこれがうまくいくと思います:

str.replaceAll("(?<!\d)0+(?=\d+)", "");

ここにいくつかのテストがあります: http://fiddle.re/rp57

于 2012-12-27T01:23:54.290 に答える
2

ここでは、2 つのアプローチの違いについて説明します。

str.replaceAll("^0+", "")

"0001000" ----> "1000"
"0000000" ----> ""


replaceAll("^0+(?!$)", "")

"0001000" ----> "1000"
"0000000" ----> "0"

(?!$) は、文字列の末尾を探すいわゆる否定先読みであり、文字列の末尾に続く「0」を削除しないでください。したがって、先頭のゼロが文字列の最後の文字でもある場合、それは削除されません

于 2013-10-23T08:57:58.070 に答える