我想使用正则表达式从句子中删除某些单词或字符,但有一些例外。

例如-我有一个字符串, this is [/.] a string [ra] with [/] something ,我想删除[ra][/.]但不删除[/]

我用了:

m = re.sub('\[.*?\]','',n)

它工作正常,如何保留此-> [/]

#1楼 票数:2 已采纳

您可以使用

re.sub(r'\[(?!/])[^][]*]', '', n)

参见regex演示

细节

  • \\[ -一个[ char
  • (?!/]) -如果当前位置的右侧紧邻有/]则负匹配将使匹配失败
  • [^][]* - []以外的0+个字符
  • ] -一个]字符。

#2楼 票数:1

使用此模式\\[(?!\\/\\])[^\\]]+\\]并将所有匹配项替换为空字符串。

说明:它与[\\[匹配,然后确保,后面的不是NOT \\] ,所以我们不与[\\]匹配,这是通过负的超前查询: (?!\\/\\]) ,然后它匹配所有内容直到]]本身具有图案[^\\]]+\\] [^\\]]+其它一个或多个字符匹配,那么] )。

演示版

#3楼 票数:1

您可以使用交替方式在组中捕获要保留的内容,并与要删除的内容匹配。

result = re.sub(r"(\[/])|\[[^]]+\]", r"\1", n)

说明

(\\[/])|\\[[^]]+\\]

  • (\\[/])分组捕获[/]
  • | 要么
  • \\[[^]]+\\]使用否定的字符类匹配左方括号直到右方括号

替换为第一个捕获组\\1

正则表达式演示

Python演示

  ask by arc translate from so

未解决问题?本站智能推荐:

3回复

如何在特定块中保留字符串,但在另一个块中更改字符串

我有一个2个块彼此略有不同的文件。下面是文件的内容 我在列表中读取了此文件,并进行了一些更改,并希望写入另一个文件。 但是我想如果在函数1下看到“ message_same”,则应照原样编写,但是如果在函数2下看到,则应删除该行或不要将该行写入输出文件。 其他代码行应保持原样 预期
2回复

如何在烧瓶路由中保留前导零

我正在使用Flask路由构建如下所示的URL: http://主机名/ nris / resource / 00001234 http://主机名/ nris / resource / 99000025 最后一个段是一个8位整数,它将与数据库中的字符串匹配。 前导零(如果有)非常重要。
1回复

如何删除或添加以特定字符或字符串开头的句子?

我有如下字符串: 我想删除以$或@开头的行,具体取决于需要。 我尝试使用以下命令:拆分给定字符串,并遍历列表中的每个元素以检查它们是否以$开头 但这没有用。
2回复

如何删除以特定字符集开头的句子中的单词?

我想在Python中使用正则表达式来删除句子中以特定字符集开头的某些单词。 例如:如果我有一个字符串"searches for IPhone 5s search results" ,我想删除所有以搜索开头的单词。 因此,结果应该是: "for IPhone 5s results" 我用
1回复

如何在不同的定界符上分割字符串,但在输出中保留某些所说的定界符?(标记字符串)

更具体地说,我想在任何非字母数字字符上分割字符串,但是在定界符不是空格的情况下,我想保留它。 也就是说,输入: 我想得到: 没有空格作为列表元素。 我尝试了以下方法: 但是输出: 我如何解决此问题而无需“不必要的”迭代? 另外,我在转义反斜杠字符时遇到了一些麻烦,因为'
2回复

用nltk分割句子,同时保留引号

我正在使用nltk将文本拆分为句子单元。 但是,我需要将包含引号的句子作为单个单元提取。 现在每个句子,即使它在一个引用中,也被提取为一个单独的部分。 这是我尝试提取为单个单元的一个示例: 现在我有这个代码: 这很好用,但即使引号本身包含多个句子,我也希望在其中保留带引号的句子。
2回复

在Python中仅在字符串中保留字母数字符号吗?

我正在使用Python 2.7。 在SO上,我发现以下用于删除非单词字符的正则表达式: 我写了下一个函数: 虽然在以下字符串上: 它产生错误的结果: \\xa9已从字符串中删除,但不应删除。
2回复

使用Python将字符串/句子中的特定文本替换为浮点数

我有一个类似这样的文件中的SQL字符串: 在这里,“ old_id”,“ myname”和“ count_days”是虚拟变量,我需要在运行sql查询时将其更改为真实值,例如id的名称为“ abcd”,Bishop的名称为no,nodays的值为5(例如)。 我已经定义了一个python