1

给定一个字符串:

#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

4

1 回答 1

3

您可以使用正则表达式

#[^\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#')
于 2020-04-16T11:16:29.787 回答