1

正規表現を機能させるのに苦労しています。

先行ゼロの存在に基づいて、次の変換を許可する必要があります...

  1. 001234 -> 1234
  2. 1234 -> 1234
  3. 00AbcD -> AbcD
  4. 001234.1234 -> 1234.1234
  5. 001234.000002 -> 1234.2
  6. 001234/000002 -> 1234.2

式の一致は変換 1、2、および 3 でうまく機能することがわかりましたが、4、5、および 6 で示されている (オプションの) 2 番目のセクションを一致させる方法がわかりません。

^0*([0-9A-Za-z]*$)
4

2 に答える 2

2

次の正規表現でゼロを取得できます。

/(?:^|[./])0+/g

デモ

2 番目のグループを最初のグループに置き換えます ( \1)。

たとえば、Pythonでは次のことができます:

>>> s="""001234
... 1234
... 00AbcD
... 001234.1234
... 001234.000002
... 001234/000002"""

>>> [re.sub(r'(:?^|[./])0+',r'\1',i) for i in s.split()]
['1234', '1234', 'AbcD', '1234.1234', '1234.2', '1234/2']
于 2015-06-12T11:00:46.940 に答える
0
^(0+)(.+)

グループ 2 が結果になるはずです。

于 2015-06-12T11:03:20.723 に答える