[英]Python Regex Get String Between Two Substrings
首先,我知道這似乎是一個重復的問題,但是,我找不到解決問題的方法。
我有一個如下所示的字符串:
string = "api('randomkey123xyz987', 'key', 'text')"
我需要提取randomkey123xyz987 ,它總是在api('和'之間,
我計划使用正則表達式,但是,我似乎遇到了一些麻煩。
這是我取得的唯一進展:
import re
string = "api('randomkey123xyz987', 'key', 'text')"
match = re.findall("\((.*?)\)", string)[0]
print match
以下代碼返回'randomkey123xyz987','key','text'
我試圖使用[^'] ,但我的猜測是我沒有正確地將它插入到re.findall函數中。
我嘗試的一切都失敗了。
更新:我目前的解決方法是使用[2:-4] ,但我仍然希望避免使用匹配[2:-4] 。
如果字符串只包含一個實例,請改用re.search()
:
>>> import re
>>> s = "api('randomkey123xyz987', 'key', 'text')"
>>> match = re.search(r"api\('([^']*)'", s).group(1)
>>> print match
randomkey123xyz987
你想要的字符串(
和,
你正趕上括號之間的一切:
match = re.findall("api\((.*?),", string)
print match
["'randomkey123xyz987'"]
或者''
之間匹配:
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('”和“',”。
>>> string = "api('randomkey123xyz987', 'key', 'text')"
>>> value = (string.split("api('")[1]).split("',")[0]
>>> print value
randomkey123xyz987
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.