我必须在数字之间加上千位分隔符。我到现在为止做了:
输入字符串
1852
2589653
586699
8542.28
查找模式
(?<=\d)(?=(?:\d{3})+(?!\d))
更换-以
,
结果
1,852
2,589,653
586,699
8,542.28
TODO
我希望从匹配收集中消除1700到2010年的所有年份范围。
任何人都有任何想法。欢迎所有建议。提前致谢。
答案 0 :(得分:2)
这不是使用正则表达式的好方法。
相反,请使用您的语言的字符串格式化功能:
例如,这是一个shell脚本,我从字符串中提取一个数字并用逗号千位分隔符格式化它:(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
答案 1 :(得分:1)
这是 PowerShell 中的 RegEx 示例:
[Regex]::Replace(12345, '[0-9](?=(?:[0-9]{3})+(?![0-9]))', '$0''')
12'345