替换重复的字符串,但在mount poin

2024-06-16 10:04:00 发布

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

我想用一些名称替换挂载点名称,在这个例子中字符串"/filesystem"是重复的,所以我的re.sub在两个位置都替换,但是我只想在挂载位置替换,在这个例子中在第二个位置,我如何修复它

re.sub(r"/filesystem", "/Abhimanyu" , "server1.abc.com:/export/admin_01/filesystem /filesystem nfs rw,bg,rsize=1048576,wsize=1048576,vers=3,timeo=600,noacl 0 0")

In [53]: re.sub(r"/filesystem", "/Abhimanyu" , "server1.abc.com:/export/admin_01/filesystem /filesystem nfs rw,bg,rsize=1048576,wsize=1048576,vers=3,timeo=600,noacl 0 0")
Out[53]: 'server1.abc.com:/export/admin_01/Abhimanyu /Abhimanyu nfs rw,bg,rsize=1048576,wsize=1048576,vers=3,timeo=600,noacl 0 0'

Tags: recomadminexportbgserver1rwabc
1条回答
网友
1楼 · 发布于 2024-06-16 10:04:00

只需将字符串的开头与第一个空格字符匹配,然后将替换的子字符串后面的空格与结尾匹配:

>>> re.sub(r"^(\S+\s)/filesystem(\s.*$)", r"\1/Abhimanyu\2", "server1.abc.com:/export/admin_01/filesystem /filesystem nfs rw,bg,rsize=1048576,wsize=1048576,vers=3,timeo=600,noacl 0 0")
'server1.abc.com:/export/admin_01/filesystem /Abhimanyu nfs rw,bg,rsize=1048576,wsize=1048576,vers=3,timeo=600,noacl 0 0'
  • ^匹配字符串的开头
  • \s\S分别匹配空白字符和非空白字符
  • $匹配字符串的结尾
  • .*匹配零个或多个(*)任何字符(.
  • ()将替换字符串中可能使用的组标记为\1\2

相关问题 更多 >