![](/img/trans.png)
[英]Pythonic way to find the last position in a string matching a negative regex
[英]RegEx - Find Position of last found symbol in String
我在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页面得到了这个正则表达式,但是我认为模式是相同的。
非常感谢你!
您使用错误的方式使用了re
模块。
您有2个错误:
search.sub
的文档 。 re
不需要正则表达式的斜线。 可以使用:
p = re.compile("^.*/(.*)$")
m = p.search(txt)
m.group(0)
要么:
m = re.search("^.*/(.*)$", txt)
m.group(0)
您说:现在,我想获取符号在“ test”和“ version01”之间的位置。
我不知道正则表达式将如何帮助您。 您可以尝试以下方法:
如果您知道符号是什么,则反向扫描符号(我假设您也这样做,因为它也在正则表达式中):
>>> txt = "mydrive/projects/test/version01"
>>> txt.rfind('/')
21
如果您不知道分隔符:
>>> import os.path
>>> len(os.path.dirname(txt))
21
我很好奇您是要使用re
还是实际上是在尝试拆分该文件路径?
如果是这样, os.path
拥有您所需要的一切,如果不能原谅我回答一个未问的问题。
In [212]: import os
In [213]: os.path.split("mydrive/projects/test/version01")
Out[213]: ('mydrive/projects/test', 'version01')
如果您想在“ test”和“ version01”之间找到符号的位置,我将只使用rfind :
txt = "mydrive/projects/test/version01"
print txt.rfind("/");
打印出21
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.