1

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

示例:“mydrive/projects/test/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

4 回答 4

3

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

您有 2 个错误:

  1. 您尝试使用已编译的正则表达式对象,就好像它是一种模式实际上这很好,请参阅search.sub文​​档
  2. Pythonre不需要正则表达式周围的斜线。

要么使用:

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

或者:

m = re.search("^.*/(.*)$", txt)
m.group(0) 
于 2013-02-01T14:49:03.237 回答
1

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

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

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

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

如果您不知道分隔符:

>>> import os.path
>>> len(os.path.dirname(txt))
21
于 2013-02-01T14:55:35.960 回答
1

我很好奇您是要使用re还是实际上正在尝试拆分该文件路径?

os.path如果是这种情况,您需要的一切,如果不原谅我回答未提出的问题。

In [212]: import os
In [213]: os.path.split("mydrive/projects/test/version01")
Out[213]: ('mydrive/projects/test', 'version01')
于 2013-02-01T14:56:59.647 回答
0

如果您想在“test”和“version01”之间找到符号的位置,我只需使用rfind

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

打印出来21

于 2013-02-01T14:54:59.727 回答