在Python中使用re.sub使字母大写?

在许多编程语言中,以下

找到foo([az]+)bar并用GOOU1GAR

将导致整个比赛被大写。 我似乎无法在python中找到等价物; 它存在吗?


你可以传递一个函数给re.sub() ,它可以让你做到这一点,这里是一个例子:

 def upper_repl(match):
     return 'GOO' + match.group(1).upper() + 'GAR'

以及使用它的一个例子:

 >>> re.sub(r'foo([a-z]+)bar', upper_repl, 'foobazbar')
 'GOOBAZGAR'

你的意思是这样吗?

>>>x = "foo spam bar"
>>>re.sub(r'foo ([a-z]+) bar', lambda match: r'foo {} bar'.format(match.group(1).upper()), x)
'foo SPAM bar'

作为参考,这里是re.sub的文档字符串(强调我的)。

通过用替换repl替换字符串中模式的最左边非重叠出现得到的字符串。 repl可以是字符串也可以是可调用的 ; 如果一个字符串,它的反斜杠转义处理。 如果它是可调用的,则它传递匹配对象,并且必须返回要使用的替换字符串。


你可以使用这个的一些变化:

s = 'foohellobar'
def replfunc(m):
     return m.groups()[0]+m.groups()[1].upper()+m.groups()[2]
re.sub('(foo)([a-z]+)(bar)',replfunc,s)

给出输出:

'fooHELLObar'
链接地址: http://www.djcxy.com/p/74825.html

上一篇: Making letters uppercase using re.sub in python?

下一篇: Regex to find named capturing groups with Go programming language