[英]Regex Python: Keep first digits
目标是保留字符串中的第一个数字,但如果它们位于不同的位置,则将其删除。
例如,应该只保留这个数字:
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
我怎样才能摆脱这个空间?
您应该能够像这样在捕获组中包含空间:
(?<=\w\b )([ 0-9]*)
^ additional space
要保留字符串中的第一个数字,您还可以使用带有交替的捕获组而不是后视。 将您想保留的内容归为一组,并匹配您不想保留的内容。
^([^\S\r\n]*\d+)|\d+[^\S\r\n]*
^
字符串开始(
捕获组1 (您要保留的内容)
[^\\S\\r\\n]*\\d+
匹配除换行符以外的可选空白字符,匹配 1+ 个数字)
关闭群组|
或者\\d+[^\\S\\r\\n]*
匹配 1+ 个数字,后跟可选的空白字符,换行符除外(您要删除的内容)例如
result = re.sub(regex, r'\1', test_str, 0, re.MULTILINE)
输出
123456 AB
123456 GENERAL
123456 HOSPITAL
PROJECT SCHOLARSHIPS
SUMMERLAND SCHOOL ABC
ABC HOSPITAL GENERAL
ABC HOSPITAL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.