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