尝试将Sed命令转换为Python re.sub

时间:2017-04-11 00:33:42

标签: python regex sed

我正在尝试将下面的Sed命令转换为python re.sub。 Sed命令基本上是从json字符串中提取access_token值。

finalString=$(echo $initialString |  sed -e 's/^.*"access_token":"\([^"]*\)".*$/\1/')

我的Python代码,我被困在更换\ 1部分。我必须用值

替换整个字符串
access_token = re.sub('^.*"access_token":"\([^"]*\)".*$',r'\1',initialString)
print access_token

我的工作echo语句如下,当我运行它时,我得到access_token值。例如:如果initialString ='{"access_token":"xyz"}'输出为xyz

echo initialString | sed -e 's/^.*"access_token":"\([^"]*\)".*$/\1/'

2 个答案:

答案 0 :(得分:1)

通常,您应该始终将原始字符串用作Python中的正则表达式。 (具体来说,这里没关系。但这是一个很好的经验法则。)

试试这个:

access_token = re.sub(r'^.*"access_token":"([^"]*)".*$', r'\1', initialString)

答案 1 :(得分:0)

我正在假设你的intialString类似于:"other":"json","access_token":"(1234)","more":"json"

access_token = re.sub(r'^.*"access_token":"\(([^\)]*)\)".*$',r'\1',initialString)

我注意到的问题是你从来没有真正捕获任何字符来引用\ 1.