【问题标题】:How select first one digit then 2-2 pair digits in python regex? [duplicate]如何在 python 正则表达式中选择第一个数字,然后选择 2-2 对数字? [复制]
【发布时间】:2018-02-10 21:02:28
【问题描述】:

我正在学习 python 正则表达式,我有一个问题,我想匹配这样的内容:

主题:1234567890

匹配我想要的:1 then 234 then 567 then 890

1,234,567,890

我尝试了什么:

(\d)(\d{3})+

不工作

https://regex101.com/r/AaWroO/1/

有什么简单的方法(不是那么复杂的正则表达式,因为我不是那么专家,我是初学者)来做这件事?

【问题讨论】:

  • re.sub(r'(\d)(?=(\d{3})+$)',r'\1,',your_string)
  • 或者,直接 Python,[s[::-1][i:i+n][::-1] for i in range(0,len(s),n)][::-1] 其中s 是您的字符串,n 是组大小。
  • 或者,如果你真的只需要 1 个数字,那么 3 个一组,(^\d|\d\d\d)

标签: python regex python-3.x match


【解决方案1】:

您可以使用交替匹配单词边界后的数字或任意 3 位数字:

>>> s = '1234567890'
>>> print re.findall(r'\b\d|\d{1,3}', s)
['1', '234', '567', '890']

RegEx 拆分:

  • \b\d: 匹配单词边界后的一个数字
  • |:或者
  • \d{1,3}:匹配任意 1 到 3 位数字

【讨论】:

  • 这仅适用于 1 位数字和 3 位数字组的字符串。
  • @anubhava : 我想问如何掌握正则表达式?就像我将能够用正则表达式解决任何复杂的字符串问题
  • regular-expressions.info上的精彩教程开始
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多