【发布时间】:2020-01-23 18:16:02
【问题描述】:
目标是保留字符串中的第一个数字,但如果它们位于不同的位置,则将它们删除。
例如,应该只保留这个数字:
123456 AB
123456 GENERAL
123456 HOSPITAL
另一方面,这些数字应该被删除:
PROJECT 150000 SCHOLARSHIPS
SUMMERLAND 05 100 SCHOOL 100 ABC
ABC HOSPITAL 01 20 30 GENERAL
ABC HOSPITAL 01
我制作了这个正则表达式,它非常接近上述行为并替换了空白:
(?<=\w\b )([0-9]*)
但是,在删除来自前一个空格的数字时,我得到了一些额外的空格:
123456 AB
123456 GENERAL
123456 HOSPITAL
PROJECT SCHOLARSHIPS
SUMMERLAND SCHOOL ABC
ABC HOSPITAL GENERAL
ABC HOSPITAL
我怎样才能摆脱这个空间?
【问题讨论】:
-
试试
re.sub(r'(\w)\s+\d+', r'\1', text)或r'(\S)\s+\d+'。如果您只需要将数字作为整个单词删除,请在末尾添加\b。如果你想使用lookbehind,你可以使用re.sub(r'(?<=\w)\s+\d+', '', text) -
或
^\s*(\d+)|\d+\s*,而不是后视并替换为第1组r\1regex101.com/r/LOsWMK/1
标签: python regex regex-lookarounds