【问题标题】:notepad regex - lines without character occuring n timesnotepad++ 正则表达式 - 没有字符出现 n 次的行
【发布时间】:2021-03-08 13:36:53
【问题描述】:

我正在寻找正确的正则表达式来查找少于 n 倍 TAB (\t) 字符的行。

我试过这个,但什么也没找到:

^.*(?:\t.*){0,20}\r\n

【问题讨论】:

  • 你试过^(?.*:\t.*){0,20}\r\n^(?:.*\t)*\r\n

标签: regex notepad++


【解决方案1】:

您的模式在开头包含.*(在^ 之后,字符串/行锚的开头),并且它尽可能匹配除换行符之外的任何零个或多个字符。因此,它可以匹配任意数量的选项卡。然后,(?:\t.*){0,20} 匹配零个、一...二十个选项卡,然后尽可能多地匹配除换行符之外的任何零个或多个字符。

最后,正则表达式根本不限制一行中制表符的数量。

要匹配您需要的标签数量不超过 N 数量的行

^(?!(?:[^\t\r\n]*\t){N+1}).*

N 是您的出现次数。因此,如果您想匹配(然后删除,因为您在正则表达式末尾有 \r\n)不超过 20 个制表符的行,您可以使用

^(?!(?:[^\t\r\n]*\t){21}).*\R?

请参阅regex demo

详情

  • ^ - 字符串/行的开始
  • (?!(?:[^\t\r\n]*\t){21}) - 如果出现 21 个零个或多个字符(除 CR、LF 和 TAB 后跟紧跟当前位置右侧的 TAB 字符),则匹配失败
  • .* - 该行的其余部分
  • \R? - 可选的换行序列(CRLF、LF 或 CR)。

【讨论】:

    猜你喜欢
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    相关资源
    最近更新 更多