正则表达式,它获取特殊字符后的最后一部分

时间:2014-09-01 07:04:16

标签: python regex

我是编程新手,需要一些关于正则表达式的帮助。

我有一个这样的字符串:xxxx.yyyy.zzzzz.mystring

上面的字符串需要的是"mystring",所以我正在寻找一个正则表达式,它给出了最后.个字符后的字符串以及它之前的字符串。

5 个答案:

答案 0 :(得分:2)

你可以尝试下面的代码来获取最后一个点之后的字符串。

>>> import re
>>> s = "xxxx.yyyy.zzzzz.mystring"
>>> m = re.search(r'(?<=\.)[^.]*$', s)
>>> m
<_sre.SRE_Match object at 0x7f9538d62370>
>>> m.group()
'mystring'
>>> s.split('.')[-1]
'mystring'

获取最后一个点之前存在的完整字符串

>>> m = re.search(r'^.*(?=\.)', s)
>>> m.group()
'xxxx.yyyy.zzzzz'

要在两个单独的组中获取第一部分(最后一个点之前的部分)和第二部分(最后一个点之后的部分),

>>> m = re.search(r'^(.*)\.(.*)$', s)
>>> m.group(1)
'xxxx.yyyy.zzzzz'
>>> m.group(2)
'mystring'

模式说明:

  • (?<=\.)正向后视断言,角色进行匹配必须是一个点。
  • [^.]*匹配任何不是零点或更多次的字符。
  • $断言我们到底。

答案 1 :(得分:1)

你也可以在没有正则表达式的情况下解决这个问题

print "xxxx.yyyy.zzzzz.mystring".split('.')[-1]

答案 2 :(得分:0)

 (?!.*\.)(.*)

这应该是这样的。

参见演示。

http://regex101.com/r/rX0dM7/4

答案 3 :(得分:0)

你实际上并不需要正则表达式。您只需使用split

即可
>>> s = "xxxx.yyyy.zzzzz.mystring"
>>> s.split('.')[-1]
mystring

答案 4 :(得分:0)

如果你有兴趣,

没有正则表达式的一个解决方案

str = "xxxx.yyyy.zzzzz.mystring"
spl = str.split(".")
print spl[len(spl) - 1]