我必须在数字之间加上千位分隔符.我到现在为止做了:
输入字符串
1852
2589653
586699
8542.28
找到模式
(?<=\d)(?=(?:\d{3})+(?!\d))
用…来代替
,
结果
1,852
2,589,653
586,699
8,542.28
去做
我希望从匹配收集中消除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