-3

我正在查看以空格分隔的字符串列表。我正在尝试查找包含不在大写字母旁边的小写“n”字母的字符串部分,然后删除小写“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"]

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

4

1 回答 1

1

您可以使用消极的后视来实现它。

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

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

分解:

  • \b\S*and :匹配单词开头和结尾的\S*\b任何非空格字符。注:根据您的需要,\S可替换为\w[a-zA-Z0-9]
  • (?<![A-Z])n: 匹配n前面没有[A-Z]
  • ?:匹配单词后的可选空格
  • 代替,空字符串将删除它
于 2020-12-19T04:03:43.260 回答