匹配选项卡的正则表达式
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
- 制表符。
请注意 (?:\.)?
与 \.?
相同。
此外,在负面回顾中捕获组没有什么意义,因为正则表达式处理将在达到反向引用模式之前停止。
我需要一个通过以下规则匹配制表符的正则表达式:
"—>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
- 制表符。
请注意 (?:\.)?
与 \.?
相同。
此外,在负面回顾中捕获组没有什么意义,因为正则表达式处理将在达到反向引用模式之前停止。