在给定字符串的起始部分和结束部分时,如何使用regex提取字符串的一部分

2024-10-02 14:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个fabric脚本来更改nodejs的版本。要做到这一点,我需要删除

node-v0.10.32-linux-x64

并用

node-v6.9.1-linux-x64

反之亦然。你知道吗

下面是一行,我需要一个正则表达式来获取行的粗体部分

/home/portweb/software/nodejs/节点-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=节点-v0.10.32-linux-x64节点-v6.9.1-linux-x64


Tags: run版本nodehomebase节点linuxdir
2条回答

您可以使用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')

并运行:

$fab sed\u节点

下面是sed的正则表达式:

"sed -i 's,/home/portweb/software/nodejs/\(.*\)/bin,/home/portweb/software/nodejs/'" + nodeversion + "'/bin,g'"

请注意,您可以使用除/之外的分隔符来提高易读性,因此这里我们使用了,

相关问题 更多 >

    热门问题