【问题标题】:How to delete string between two different signs in python [duplicate]如何删除python中两个不同符号之间的字符串[重复]
【发布时间】:2019-11-26 22:47:34
【问题描述】:

鉴于/* */ 之间包含一些短语的文本,我想删除其中的字符串/短语。

例如:

aaaabbbbb /*ppppqqqqrrrsss sstttuuu*/cccccddddeee

想要的输出:

aaaabbbbb /**/cccccddddeee

我尝试使用 python 正则表达式中的re.sub(r'(\/*{2,3}[\s\n]*)(?:.*?[\s\n]*)*([\n\s]*\/*{2,3}),但无法识别 * 符号。

有人知道我哪里出错了吗?

【问题讨论】:

  • * 是一个正则表达式特殊字符,因此如果您想要文字 \*,则需要对其进行转义。

标签: python regex


【解决方案1】:

(?<=\/\*)[\s\S]*?(?=\*\/)

此正则表达式使用正向回溯来断言存在前面的 /*,并使用正向回溯来断言存在尾随 */,并在两者之间捕获任意行数的任何字符。

正如 cmets 中所指出的,* 是一个特殊的正则表达式字符,需要使用反斜杠进行转义,例如 \*

Demo


python代码如下:

import re

text = "aaaabbbbb /*ppppqqqqrrrsss\n\nss/tt*tu/uu*/cccccddddeee"

print(re.sub('(?<=\/\*)[\s\S]*?(?=\*\/)', '', text))

Demo

【讨论】:

  • 天啊,是的,我没有找到逃避 *.有效。谢谢你。 =)
猜你喜欢
  • 1970-01-01
  • 2014-04-06
  • 2011-04-14
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 2016-07-01
相关资源
最近更新 更多