python正则表达式(一)

如何写一个正则表达式,匹配每3 位就有一个逗号的数字?它必须匹配以下数字:‘42’ ‘1,234’ ‘6,368,745’ 但不会匹配:‘12,34,567’ (逗号之间只有两位数字) ‘1234’ (缺少逗号)

方法一;

numregex20 =re.compile(r'^\d{1,3}(,\d{3})*$')     #^和$来锚定开头和结尾
input_values=['42', '1,234', '6,368,745','12,34,567', '1234']
for value in input_values:
    if numregex20.search(value) is not None:
        print_value=numregex20.search(value).group()
        print(print_value)

方法二;

numregex20_2 = re.compile(r'(?<![\d|\,])(?:\d{1,3})(?:\,\d{3})*(?=\s)')
text='42 1,234 6,368,745 12,34,567 1234'
result = numregex20_2.findall(text)
print(result)

方法三; 使用空白边界来匹配正确格式化的千位逗号

numregex20_2 = re.compile(r"(?<!\S)\d{1,3}(?:,\d{3})*(?!\S)")
# (? < ! \S)    空白的边界
# \d{1, 3}
# (?:,  \d{3}) *   可选的逗号 3 digits, 0 to many times
# (?! \S)  # Whitespace boundary  空白的边界
text = '42 1,234 6,368,745 12,34,567 1234'
result = numregex20_2.findall(text)
print(result)

方法四; 试图匹配不需要的模式

s = '42 1,234 6,368,745 12,34,567 1234'
rgx = re.compile(',[0-9]{1,2},|[0-9]{4,}')
nums = [x for x in s.split() if not rgx.search(x)]
print(nums)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值