匹配选项卡的正则表达式

Regex expression to match tab

我需要一个通过以下规则匹配制表符的正则表达式:

"—>text"       does not match
"1.—>text"     does not match
"1—>text"      does not match
"A.—>text"     does not match
"text—>text"   match

也就是说,它不应该匹配文本开头的制表符,在列出的项目标记 [A-Z] 或 [0-9] 之后。这是我的表达:

(?<!^((?:\d+|[A-Z])(?:\.)?))\t(?!)

https://regex101.com/r/zgJAG9/1

它并不适用于所有情况:

如何解决?

您可以使用

(?<!^(?:(?:\d+|[A-Z])\.?)?)\t

regex demo详情:

  • (?<!^(?:(?:\d+|[A-Z])\.?)?) - 如果在当前位置的左侧紧邻有
    • ^ - 字符串开头
    • (?:(?:\d+|[A-Z])\.?)? - 一个可选的序列
      • (?:\d+|[A-Z]) - 一位或多位数字或大写 ASCII 字母
      • \.? - 一个可选的 .
  • \t - 制表符。

请注意 (?:\.)?\.? 相同。

此外,在负面回顾中捕获组没有什么意义,因为正则表达式处理将在达到反向引用模式之前停止。