如何在字符串中获得前后匹配?

Sre*_*a E 0 python string python-2.7 python-3.x

我希望在一个字符串中得到一个after和之前的匹配.

例如,使用以下字符串:

"Hello I am Jim!"
Run Code Online (Sandbox Code Playgroud)

搜索字符串为:"I am",搜索字符串之前的匹配应为:"Hello"并且之后的匹配应为:"Jim!".

我怎样才能做到这一点?

Jim*_*ard 6

使用str.partition哪个做到这一点:

S.rpartition(sep) -> (head, sep, tail)

搜索分隔sepS开始,结束S,和之前返还一部分,该分离器本身,而其后的部分.

所以,使用你的示例字符串:

before, search_str, after = "Hello I am Jim!".partition("I am ")
Run Code Online (Sandbox Code Playgroud)

现在before,search_strafter有:

>>> print(before)
Hello 
>>> print(search_str)
I am
>>> print(after)
Jim!
Run Code Online (Sandbox Code Playgroud)

str.partition还会为您返回分隔符作为返回元组中的中间元素.如果您不需要,那就str.split(separator)足够了.


nu1*_*73R 5

你也可以使用 split()

>>> before, after = "Hello I am Jim!".split("I am")
>>> before
'Hello '
>>> after
' Jim!'
Run Code Online (Sandbox Code Playgroud)