给定一个字符串:
#symbol 1# / 7 - #symbol 2#
我想返回:
func('#symbol 1#') / 7 - func('#symbol 2#')
我试过了:
re.sub('[#*#]', 'func(\'', f2)
这使:
func(symbol 1func( / 7 - func(symbol 2func(
我不想要func('
第二个哈希的地方。
有没有办法')
用? 替换散列的结尾re.sub
?
您可以使用正则表达式
#[^\s#](?:[^#]*[^\s#])?#
替换为func('\g<0>')
where\g<0>
指的是整个匹配。请参阅正则表达式演示。
细节
#
- 一个#
字符[^\s#]
- 除空格以外的字符和#
(?:[^#]*[^\s#])?
- 一个可选的非捕获组匹配 1 或 0 次出现
[^#]*
- 0 个或更多字符#
[^\s#]
- 除空格以外的字符和#
#
- 一个#
字符。请参阅Python 演示:
import re
text = '#symbol 1# / 7 - #symbol 2#'
print( re.sub(r'#[^\s#](?:[^#]*[^\s#])?#', r"func('\g<0>')", text) )
# => func('#symbol 1#') / 7 - func('#symbol 2#')