如何从 re.sub 匹配中索引匹配组中的字符。
所以我正在尝试这样做:
import re
string_test = "this.day"
string_test = re.sub("^(.*?)\.(.*?)", "\g<1>[0].\g<2>", string_test)
我的结果应该是:"t.day"
.是否有可能以某种方式索引 \g<1>
re.sub 中的组?显然\g<1>[0]
不起作用。
除非使用 lambda 函数,否则无法像上面那样进行索引。只需像下面这样更改您的正则表达式即可。
string_test = re.sub("^(.)[^.]*\.(.*)", r"\g<1>.\g<2>", string_test)
或
>>> import re
>>> string_test = "this.day"
>>> re.sub(r"^(.)[^.]*\.(.*)", r"\1.\2", string_test)
't.day'
如果你真的想做索引,
>>> re.sub(r"^(.*?)\.(.*)", lambda m: m.group(1)[0] + '.' + m.group(2), string_test)
't.day'
>>> re.sub(r"^(.*?)(\..*)", lambda m: m.group(1)[0] + m.group(2), string_test)
't.day'
我是一名优秀的程序员,十分优秀!