RegEx - 在String中查找最后找到的符号的位置

时间:2013-02-01 14:46:50

标签: python regex string

我正在使用Python中的正则表达式,我想找到String中最后一个标记的位置。

实施例: “mydrive /项目/测试/ version01”

现在我想获得“test”和“version01”之间符号的位置

import re
txt = "mydrive/projects/test/version01"
p = re.compile("/^.*/(.*)$/")
m = re.search(p, txt)
m.group(0) 
#but m.group(0) delivers None

但有了这个我得到“无”我尝试了几件事,但无法让它找到模式。顺便说一下,我从javascript页面获得了这个正则表达式,但我认为模式是相同的。

非常感谢你!

4 个答案:

答案 0 :(得分:3)

您以错误的方式使用re模块。

您有2个错误:

  1. 您尝试使用已编译的regexp对象,就好像它是一个模式实际上这很好,请参阅search.sub's documentation
  2. Python的re不需要正则表达式周围的斜杠。
  3. 使用:

    p = re.compile("^.*/(.*)$")
    m = p.search(txt)
    m.group(0) 
    

    或者:

    m = re.search("^.*/(.*)$", txt)
    m.group(0) 
    

答案 1 :(得分:1)

你说:现在我想获得“test”和“version01”之间符号的位置。

我不知道正则表达式对你有多大帮助。您可以尝试以下方法:

反转扫描符号,如果你知道符号是什么(我假设你这样做,因为它也在正则表达式中):

>>> txt = "mydrive/projects/test/version01"
>>> txt.rfind('/')
21

如果您不知道分隔符:

>>> import os.path
>>> len(os.path.dirname(txt))
21

答案 2 :(得分:1)

我很好奇你是想要使用re还是实际上想要分割那个文件路径?

os.path如果是这样的话就有你所需要的,如果不原谅我回答一个非问题的问题。

In [212]: import os
In [213]: os.path.split("mydrive/projects/test/version01")
Out[213]: ('mydrive/projects/test', 'version01')

答案 3 :(得分:0)

如果您要在“text”和“version 01”之间找到符号的位置,我只需使用rfind

txt = "mydrive/projects/test/version01"
print txt.rfind("/");

打印出21