使用REGEX替换方法放千位分隔符

我必须在数字之间加上千位分隔符.我到现在为止做了:

输入字符串

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
点赞