使用正则表达式替换括号内的字符

时间:2019-04-02 12:43:14

标签: python python-regex

我有一个像这样的字符串

str="hello <abc123> python <is456> awesome"

并且我想用上面的字符串应该赋予的其他字符替换括号中的字符

"hello lock python lock awesome "

我尝试过类似的事情:

ss=str.replace("\\<(.*?)\\>",'lock') 

但这没用。那么,我该如何使用正则表达式呢?

6 个答案:

答案 0 :(得分:3)

您可以进行简单的re gex替换,

>>> import re
>>> str = "hello <abc123> python <is456> awesome"
>>> re.sub(r'<.*?>', 'lock', str)
'hello lock python lock awesome'

答案 1 :(得分:1)

这可以做到(将后向/超前断言与.的非贪婪匹配相结合):

before = "hello <abc123> python <is456> awesome"
after = re.sub(r'(?<=<).+?(?=>)', 'lock', before)
print(after)

输出:

hello <lock> python <lock> awesome

如果您不想要方括号,那么re.sub(r'<.+?>', 'lock', before)应该没问题。

答案 2 :(得分:1)

>>> import re
>>> s ="hello <abc123> python <is456> awesome"
>>> re.sub('<.*?>', 'lock', s)
'hello lock python lock awesome'

答案 3 :(得分:1)

import re
str="hello <abc123> python <is456> awesome"
re.sub('\<(.*?)\>','lock',str)

结果:

'hello lock python lock awesome'

说明

1. \ <:<< / strong>是一个元字符,如果要匹配则需要转义     从字面上看。
2. (。*?):以非贪婪的方式匹配所有内容,然后     捕获它。
3. >:> 是元字符,如果您需要转义     想要从字面上进行匹配。

答案 4 :(得分:0)

我尝试了here 按照正则表达式,得到2个匹配组,每个<something>组一个:

regex = r"^.*(<\S+>).*(<\S+>).*$"

答案 5 :(得分:0)

使用以下regx:

import re
s = "hello <abc123> python <is456> awesome"
result = re.sub(r'\<[^<>]+\>', "lock", s)

print(result)

输出:

hello lock python lock awesome