4

数字の間に千の区切り文字を入れなければなりません。私は今までやった:

入力文字列

1852  
2589653  
586699  
8542.28

検索パターン

(?<=\d)(?=(?:\d{3})+(?!\d))  

と置換する

,  

結果

1,852  
2,589,653  
586,699  
8,542.28 

TODO
マッチコレクションから、1700年から2010年までのすべての年の範囲を削除したいと思います。

誰でも考えがあります。すべての提案を歓迎します。前もって感謝します。

4

2 に答える 2

1

これは正規表現を使用するための良い方法ではありません。

代わりに、言語の文字列フォーマット機能を使用してください。

  • テキストから数値を抽出する必要がある場合は、単純な正規表現を使用して数値を検索します。
  • それらを浮動小数点または整数に変換します(必要に応じて)
  • 文字列フォーマット指定子を使用して、千単位の区切り文字で出力するようにします。

たとえば、文字列から数値を抽出し、カンマの千単位の区切り文字でフォーマットするシェルトランスクリプトを次に示します。(Python 2.x)

In [12]: import re

In [13]: number_pattern = re.compile(r"\d+(.\d+)") #positive integer or floating point number

In [14]: mystring = "The size of the rocket is 3141592.6."

In [15]: number_string = number_pattern.search(mystring).group() #extract the number as a string

In [16]: number_string
Out[16]: '3141592.6'

In [18]: number = float(number_string) #convert to number

In [19]: '{:,}'.format(number) #format with thousands separator
Out[19]: '3,141,592.6'

このようにすることで、数値の範囲を簡単に削除することもできます。

if (number > 1700) or (number < 2100):
    pass #do something
于 2012-04-17T13:00:27.063 に答える
1

PowerShellの正規表現の例を次に示します。

[Regex]::Replace(12345, '[0-9](?=(?:[0-9]{3})+(?![0-9]))', '$0''')
12'345
于 2021-04-26T12:52:26.667 に答える