删除特定字母和相邻的字符串值正则表达式

Remove specific letter and adjacent string values regex

我正在查看 space 分隔的字符串列表。我试图找到包含小写字母“n”的部分字符串,该字母在大写字母旁边 而不是 ,然后删除小写字母“n”和任何相邻的 letter/number.示例:

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"]

我不确定如何开始这个正则表达式条件。如果有点难,请见谅。

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

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

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

细分:

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