取反^(```)并重复其元素

时间:2018-11-11 03:47:50

标签: regex python-3.x

假设这样的降价文件

In [86]: !cat formatCase.md                                                                                       

Some content in the head

```
>>> '{:20,.2f}'.format(18446744073709551616.0)
'18,446,744,073,709,551,616.00'
```

When formatting an integer, include the comma after the width:

```
>>> '{:20,d}'.format(18446744073709551616)
'18,446,744,073,709,551,616'
```

some content on the foot.

我想将语言类型添加到```

In [88]: c = open("new_format.md").read()

new_c = re.sub(r"```([^`]+)```", r"```python\1```",c)

此解决方案有效,
再走一步,如果存在在```内产生错别字错误的情况,就会发生一个`或两个`,

然后,应将[^`]替换为^(```)。

交替尝试

r"```(^(```))+```"
r"```(?:^(?:```))+```"
r"```((?:^(?:```))+)```"

它不能正确执行。

如何考虑^(```)情况。

1 个答案:

答案 0 :(得分:1)

您可以使用

r'```([^`]*(?:``?(?!`)[^`]*)*)```'

请参见regex demo

详细信息

  • ```-3个反引号
  • ([^`]*(?:``?(?!`)[^`]*)*)-第1组:
    • [^`]*-除反引号外的0+个字符
    • (?:``?(?!`)[^`]*)*-的零次或多次重复
      • ``?(?!`)-1或2个反引号后面没有另一个反引号
      • [^`]*-除反引号外的0+个字符
  • ```-3个反引号