正则表达式运用不熟练,没有办法,菜鸡只能出此下策。
有大佬有更简单的方法可以告知一下我。
在使用 findall() 函数进行字符串提取时,是先找到前定位符,再找后定位符。
在无法更加精确前定位符的时候
如果有多个前定位符时也之会找第一个
而我只想要离后定位符最近的那个
即在定位符为A和C时,找AABC中的B
代码如下:
import re
str = '123456123456789' #待搜索字符
pior = '123' #前定位符
late = '789' #后定位符
len_str= len(str)
len_pior = len(pior)
str_loc = ''
for i in range(len_str):
str_loc = str[len_str-i-1]+str_loc
if str[len_str-i-1-len_pior:len_str-i-1] == pior:
str_loc = pior+str_loc
break
str0 = re.findall(r'{}(.*?){}'.format(pior, late),str_loc)
print(str0[0]) #输出结果:456
本人菜鸡
有不对的尽管指出来。
有更好的也麻烦告诉我一声。