在Python中将[1-2]替换为1

时间:2015-04-14 22:56:55

标签: python regex python-2.7 python-3.x

我想将[1-2]替换为 1 ,将[3-4]替换为 3 ,将[7-8]替换为 7 [2] 2 ,依此类推。

例如,我想使用以下字符串:

db[1-2].abc.xyz.pqr.abc.abc.com
db[3-4].abc.xyz.pqr.abc.abc.com
db[1].abc.xyz.pqr.abc.abc.com
xyz-db[1-2].abc.xyz.pqr.abc.abc.com

并将它们转换为

db1.abc.xyz.pqr.abc.abc.com
db3.abc.xyz.pqr.abc.abc.com
db1.abc.xyz.pqr.abc.abc.com
xyz-db1.abc.xyz.pqr.abc.abc.com

2 个答案:

答案 0 :(得分:4)

您可以使用正则表达式:

^(.*)\[([0-9]+).*?\](.*)$

并将其替换为:

$1$2$3

这是正则表达式的作用:

  

^ 匹配字符串
的开头   (。*)可以任意次数匹配任何字符,也是第一个捕获组
   \ [匹配字符[字面意思为   ([0-9] +)匹配任意数字1次或更多次,也是第二个捕获组
  。*?会在任何时候匹配任何字符,但会尝试找到最小的匹配    \] 匹配字符]字面意思为   (。*)可以任意次数匹配任何字符    $ 匹配字符串的结尾

将其替换为$1$2$3,您将其替换为第一个捕获组中的文本,然后是第二个捕获组中的文本,然后是第三个捕获组中的文本。

regex101.com上的

Here's a live preview

答案 1 :(得分:-2)

import re

def fixString(strToFix):
    groups = re.match("(.*)\[(\d*).*\](.*)", strToFix).groups()
    return "%s%s%s" % (groups[0], groups[1], groups[2])