0

我有一个txt = 'The fat \m{cat sat} on \m{the} mat.'希望输出的文本'The fat cat sat on the mat.'

我尝试了以下两种方法:

re.sub(r'\\m\{(.*)\}', '', txt) 
# output: 'The fat  mat.'

re.sub(r'\\m\{(?=.*)\}', '', txt) 
# output: 'The fat \\m{cat sat} on \\m{the} mat.'

为什么会这样,我该怎么办?

4

2 回答 2

2

您可以稍微修改自己的正则表达式以使其工作

  • 使用反向引用来替换值,而不仅仅是空字符串
  • 也让你正则表达式变得懒惰,即 (.*) -> (.*?) or ([^}]*)

import re
txt = 'The fat \m{cat sat} on \m{the} mat.';
r = re.sub(r'\\m\{(.*?)\}', "\g<1>", txt);
print(r);      

//The fat cat sat on the mat.

注意:- 您可以使用r"\1" or"\\1"而不是\g<1>反向引用捕获的组

于 2019-09-03T04:59:58.077 回答
0

可能这个表情

\\m{|}

用空字符串替换可能会起作用。

测试

import re

print(re.sub(r"\\m{|}", '', 'The fat \m{cat sat} on \m{the} mat.'))

输出

The fat cat sat on the mat.
于 2019-09-03T03:58:48.730 回答