Python在regex定义的索引处截断字符串

2024-04-19 20:52:55 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
2条回答
^.*?(?=\s*\d+d\s+(?:wagon|sedan)|\s*\d+(?:\.\d+)?l)

你可以用这个。看到了吗演示。你知道吗

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

import re
p = re.compile(ur'^.*?(?=\s*\d+d\s+(?:wagon|sedan)|\s*\d+(?:\.\d+)?l)', re.MULTILINE)
test_str = u"2007 ford falcon xr8 ripcurl bf mkii utility 5.4l v8 cyl 6 sp manual bionic \n2004 nissan x-trail ti 4x4 t30 4d wagon 2.5l 4 cyl 5 sp manual twilight \n2002 subaru liberty rx my03 4d sedan 2.5l 4 cyl 5 sp manual silver "

re.findall(p, test_str)

一种选择是将从单词开始的所有内容替换为使用l的空字符串,该单词的数字后跟d,数字后跟wagonsedan

>>> import re
>>>
>>> l = ["2007 ford falcon xr8 ripcurl bf mkii utility 5.4l v8 cyl 6 sp manual bionic ", "2004 nissan x-trail ti 4x4 t30 4d wagon 2.5l 4 cyl 5 sp manual twilight ", "2002 subaru liberty rx my03 4d sedan 2.5l 4 cyl 5 sp manual silver"]
>>> for item in l:
...     print(re.sub(r"(\b[0-9.]+l\b|\d+d (?:wagon|sedan)).*$", "", item))
... 
2007 ford falcon xr8 ripcurl bf mkii utility 
2004 nissan x-trail ti 4x4 t30 
2002 subaru liberty rx my03 

其中:

  • \b[0-9.]+l\b将匹配另一个以l结尾的
  • \d+d (?:wagon|sedan)将匹配一个或多个数字,后跟字母d,后跟空格和wagonsedan(?:...)表示非捕获组

相关问题 更多 >