【问题标题】:Remove specific letter and adjacent string values regex删除特定字母和相邻字符串值正则表达式
【发布时间】:2020-12-18 12:30:16
【问题描述】:

我正在查看以空格分隔的字符串列表。我正在尝试查找包含小写“n”字母的字符串部分,该字母在大写字母旁边 not,然后删除小写“n”和任何相邻的字母/数字。示例:

before = ["23n 5T R3",
"4T 3R 2+ 2-",
"-2 +3RF n3",
"Nn1 L9 3+ n",
"un2 L0 -9 e"]

我正在尝试获得如下输出:

after = ["5T R3",
"4T 3R 2+ 2-",
"-2 +3RF",
"Nn1 O9 3+",
"L0 -9 e"]

我不确定如何开始这个正则表达式条件。抱歉,如果它有点强硬。

【问题讨论】:

  • 运行 "[re.sub(r'([\b.n\b|\b.n\b"]+)','', x) for x in before]" 删除所有小写字母 "n " 字母,即使与大写字母相邻。
  • 我的问题在没有关于看起来不正确的指导的情况下被否决:) 也许管理员可以在这里提供一些输入?

标签: python regex string substring case-sensitive


【解决方案1】:

您可以使用negative lookbehind 来实现它。

演示: https://regex101.com/r/HKi4tp/2

模式: \b\S*(?<![A-Z])n\S*\b ?

细分:

  • \b\S*\S*\b:匹配单词开头和结尾的任何非空格字符。 (注意:根据您的需要,\S可以替换为\w[a-zA-Z0-9]
  • (?<![A-Z])n:匹配n 前面没有[A-Z]
  • ?: 在单词后面匹配一个可选的空格
  • 代之以空字符串将其删除

【讨论】:

  • 这是一个了不起的解释和演示方法。非常感谢@Prasanna!
猜你喜欢
  • 2016-07-21
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 2022-06-15
相关资源
最近更新 更多