【问题标题】:Regex expression to match tab正则表达式匹配选项卡
【发布时间】:2022-01-12 11:54:04
【问题描述】:

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

"—>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(?!\1)

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

它不适用于所有情况:

如何解决?

【问题讨论】:

    标签: regex regex-lookarounds


    【解决方案1】:

    你可以使用

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

    请参阅regex demo详情

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

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

    此外,在负向后视中捕获组几乎没有意义,因为正则表达式处理将在达到反向引用模式之前停止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 2020-06-24
      相关资源
      最近更新 更多