给定字符串的开始和结束部分时,如何使用正则表达式提取字符串的一部分
How to extract a part of a string using regex, when starting and ending portion of the string is given
我正在编写一个 fabric 脚本来更改 nodejs 版本。为此,我需要删除
node-v0.10.32-linux-x64
并将其替换为
node-v6.9.1-linux-x64
反之亦然。
下面是一行,我需要一个正则表达式来获取该行的粗体部分
/home/portweb/software/nodejs/node-v0.10.32-linux-x64/bin
下面是更改nodejs版本的代码。
@task
def changeVersion(appname='nodejs', rootdir='/home/portweb/software',homedir='/home/portweb',tarfile='node-v6.9.1-linux-x64.tar.gz',nodeversion='node-v'):
"""install nodejs"""
base_dir = rootdir +'/'+appname
run ('if [ ! -d ' + base_dir + ' ] ; then mkdir -p ' + base_dir + '; fi')
put('../package/'+tarfile, base_dir + '/', use_sudo=False)
with cd (base_dir):
run('tar -zxf '+ tarfile)
run ('sed -i \'s/regex/'+nodeversion+'/g\' /home/portweb/.bashrc')
print "****Nodejs Version Changed"
nodeversion = node-v0.10.32-linux-x64 或 node-v6.9.1-linux-x64;
这是 sed 的正则表达式:
"sed -i 's,/home/portweb/software/nodejs/\(.*\)/bin,/home/portweb/software/nodejs/'" + nodeversion + "'/bin,g'"
请注意,为了便于阅读,您可以使用 /
以外的分隔符,所以这里我们使用 ,
您可以使用 fabric sed 函数在 prueba.txt 中替换您想要的链:
def sed_node():
sed('/home/user/test/prueba.txt', 'node-v0.10.32-linux-x64', 'node-v6.9.1-linux-x64')
和运行:
$ 很棒 sed_node
我正在编写一个 fabric 脚本来更改 nodejs 版本。为此,我需要删除
node-v0.10.32-linux-x64
并将其替换为
node-v6.9.1-linux-x64
反之亦然。
下面是一行,我需要一个正则表达式来获取该行的粗体部分
/home/portweb/software/nodejs/node-v0.10.32-linux-x64/bin
下面是更改nodejs版本的代码。
@task
def changeVersion(appname='nodejs', rootdir='/home/portweb/software',homedir='/home/portweb',tarfile='node-v6.9.1-linux-x64.tar.gz',nodeversion='node-v'):
"""install nodejs"""
base_dir = rootdir +'/'+appname
run ('if [ ! -d ' + base_dir + ' ] ; then mkdir -p ' + base_dir + '; fi')
put('../package/'+tarfile, base_dir + '/', use_sudo=False)
with cd (base_dir):
run('tar -zxf '+ tarfile)
run ('sed -i \'s/regex/'+nodeversion+'/g\' /home/portweb/.bashrc')
print "****Nodejs Version Changed"
nodeversion = node-v0.10.32-linux-x64 或 node-v6.9.1-linux-x64;
这是 sed 的正则表达式:
"sed -i 's,/home/portweb/software/nodejs/\(.*\)/bin,/home/portweb/software/nodejs/'" + nodeversion + "'/bin,g'"
请注意,为了便于阅读,您可以使用 /
以外的分隔符,所以这里我们使用 ,
您可以使用 fabric sed 函数在 prueba.txt 中替换您想要的链:
def sed_node():
sed('/home/user/test/prueba.txt', 'node-v0.10.32-linux-x64', 'node-v6.9.1-linux-x64')
和运行:
$ 很棒 sed_node