从"right to left"中获取字符串的位置



>又是我。

这次我需要帮助来找到字符串的位置,但从右到左。

前任:

  1. 新车是:>SUV福特(用户文件:1191.jpg(,OK;)
  2. 电池故障:>>皮卡雪佛兰(用户文件:23.jpg(,错误:'(
  3. 新车是:>SUV起亚(用户文件:8.jpg(,OK;)
  4. 新车是:>SUV丰田(用户文件:27411058.jpg(,OK;)
  5. 电池故障:>>> SUV 道奇(用户文件:9409.jpg(,坏,优先级

所以,我想得到"NUMBER.jpg">的位置,但从右到左:

  1. 索引 #: 8 --从右到左>
  2. 索引 #: 10 --从右到左>
  3. 索引 #: 8 --从右到左>
  4. 索引 #: 8 --从右到左>
  5. 索引 #: 16 --从右到左>

如何在 python 2.7 中做到这一点?

@dot。Py 你在哪里?我需要你的支持。

与此同时,你没有得到其他"pythonic"答案,这是一个完全的"黑客":

import re
print re.search("gpj", line[::-1]).start() # "gpj" as it reads in reverse 

或者,提到的伪代码 G5W 可能是这样的:

import re
match = "jpg"
pos = re.search(match, line).start()
print len(line) - pos - len(match)

无论哪种方式,都应该得到:

8
10
8
8
16

结果位于捕获组 1 中。

从末尾(最右边(开始,回溯直到找到它。
这是最快的方法(引擎针对速度对其进行优化(。

.*((?<!d)d+.jpg)

扩大

 .* 
 (                             # (1 start)
      (?<! d )
      d+ 
      . jpg 
 )                             # (1 end)

最新更新