Python正则表达式获取两个子字符串之间的字符串
首先,我知道这似乎是一个重复的问题,然而,我找不到解决问题的有效方法 我的字符串如下所示:Python正则表达式获取两个子字符串之间的字符串,python,regex,python-2.7,Python,Regex,Python 2.7,首先,我知道这似乎是一个重复的问题,然而,我找不到解决问题的有效方法 我的字符串如下所示: string = "api('randomkey123xyz987', 'key', 'text')" 我需要提取randomkey123xyz987,它将始终位于api('和' 我本来打算用Regex来做这个,但是,我似乎遇到了一些麻烦 这是我取得的唯一进步: import re string = "api('randomkey123xyz987', 'key', 'text')" match = r
string = "api('randomkey123xyz987', 'key', 'text')"
我需要提取randomkey123xyz987,它将始终位于api('和'
我本来打算用Regex来做这个,但是,我似乎遇到了一些麻烦
这是我取得的唯一进步:
import re
string = "api('randomkey123xyz987', 'key', 'text')"
match = re.findall("\((.*?)\)", string)[0]
print match
以下代码返回“randomkey123xyz987”、“key”、“text”
我尝试使用[^'],但我猜我没有正确地将其插入re.findall函数
我所尝试的一切都失败了
更新:我当前的解决方法是使用[2:-4],但我仍然希望避免使用匹配[2:-4]。如果您想要
(
和,
)之间的字符串,您正在捕获参数之间的所有内容:
match = re.findall("api\((.*?),", string)
print match
["'randomkey123xyz987'"]
或''
之间的匹配:
如果这就是字符串的实际外观,则可以拆分:
string = "api('randomkey123xyz987', 'key', 'text')"
print(string.split(",",1)[0][4:])
您应该使用以下正则表达式:
api\('(.*?)'
假设api(
是固定前缀
它匹配api(
),然后捕获接下来出现的内容,直到”
标记
>>> re.findall(r"api\('(.*?)'", "api('randomkey123xyz987', 'key', 'text')")
['randomkey123xyz987']
如果字符串仅包含一个实例,请改用:
如果您确定randomkey123xyz987始终在“api('”和“,”之间,则使用split()方法可以在一行中完成。这样您就不必使用正则表达式匹配。它将匹配起始和结束分隔符之间的模式,即“api('”和“'”, “
>>> re.findall(r"api\('(.*?)'", "api('randomkey123xyz987', 'key', 'text')")
['randomkey123xyz987']
>>> import re
>>> s = "api('randomkey123xyz987', 'key', 'text')"
>>> match = re.search(r"api\('([^']*)'", s).group(1)
>>> print match
randomkey123xyz987
>>> string = "api('randomkey123xyz987', 'key', 'text')"
>>> value = (string.split("api('")[1]).split("',")[0]
>>> print value
randomkey123xyz987