2017-03-31 67 views
1

它又是我。從「從右到左」獲取字符串的位置

這一次我需要幫助找到一個字符串的位置,但從右到左。

例:

  1. 新車:> SUV福特(用戶文件:1191.jpg),OK;)
  2. 失敗是電池:>>皮卡雪佛蘭(用戶文件: 23.jpg),BAD:'(
  3. 新車:> SUV起亞(用戶文件:8.JPG),OK;)
  4. 新車:> SUV豐田(用戶文件:27411058.jpg),OK;)
  5. 失敗是電池:>>> SUV道奇(用戶文件:9409.jpg),BAD,優先

所以,我希望得到位置'NUMBER.jpg'的,但從右到左:

  1. 索引#:8 - >右至左
  2. 索引#:10 - >右至左
  3. 索引# :8 - >右至左
  4. 指數#:8 - >右至左
  5. 指數#:16 - >右至左

我怎麼能做到這一點在Python 2.7?

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

+0

僞代碼:長度(FullString) - StartOfMatch_LeftToRight +長度(MatchedString) – G5W

+1

你能翻譯它到Python 2.7? –

回答

1

在你沒有得到其他「Python的」答案的同時,這裏是一個總的「黑客」:

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 
+0

酷! 現在我將發佈其他主題,我希望你能幫助我。 感謝兄弟。 –

+0

歡迎光臨,隨時恭候您的光臨! – davedwards

+0

謝謝!我非常感謝你。 –

0

結果是捕獲組1

從結尾(最右邊)和回溯開始直到找到它。
這是最快的方式可以完成(引擎優化速度)。

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

擴展

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

有趣! –

+0

@frankam - 有趣的是什麼? – sln

相關問題