我有一个像这样的字符串
str="hello <abc123> python <is456> awesome"
并且我想用上面的字符串应该赋予的其他字符替换括号中的字符
"hello lock python lock awesome "
我尝试过类似的事情:
ss=str.replace("\\<(.*?)\\>",'lock')
但这没用。那么,我该如何使用正则表达式呢?
答案 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