使用正则表达式修剪前导零
Trimming leading zeros with regex
我正在努力让正则表达式起作用。
我需要根据前导零的存在允许以下转换...
- 001234 -> 1234
- 1234 -> 1234
- 00AbcD -> AbcD
- 001234.1234 -> 1234.1234
- 001234.000002 -> 1234.2
- 001234/000002 -> 1234.2
我发现表达式匹配适用于转换 1、2 和 3,但我不确定如何匹配在 4、5 和 6 中演示的(可选)第二部分。
^0*([0-9A-Za-z]*$)
您可以使用以下正则表达式获取零:
/(?:^|[./])0+/g
并将第二组替换为第一组 (</code>)。 </p>
<p>例如,在 python 中,我可以执行以下操作:</p>
<pre><code>>>> s="""001234
... 1234
... 00AbcD
... 001234.1234
... 001234.000002
... 001234/000002"""
>>> [re.sub(r'(:?^|[./])0+',r'',i) for i in s.split()]
['1234', '1234', 'AbcD', '1234.1234', '1234.2', '1234/2']
^(0+)(.+)
第 2 组应该是结果。
我正在努力让正则表达式起作用。
我需要根据前导零的存在允许以下转换...
- 001234 -> 1234
- 1234 -> 1234
- 00AbcD -> AbcD
- 001234.1234 -> 1234.1234
- 001234.000002 -> 1234.2
- 001234/000002 -> 1234.2
我发现表达式匹配适用于转换 1、2 和 3,但我不确定如何匹配在 4、5 和 6 中演示的(可选)第二部分。
^0*([0-9A-Za-z]*$)
您可以使用以下正则表达式获取零:
/(?:^|[./])0+/g
并将第二组替换为第一组 (</code>)。 </p>
<p>例如,在 python 中,我可以执行以下操作:</p>
<pre><code>>>> s="""001234
... 1234
... 00AbcD
... 001234.1234
... 001234.000002
... 001234/000002"""
>>> [re.sub(r'(:?^|[./])0+',r'',i) for i in s.split()]
['1234', '1234', 'AbcD', '1234.1234', '1234.2', '1234/2']
^(0+)(.+)
第 2 组应该是结果。