如何解决记事本正则表达式 - 没有出现 n 次字符的行
我正在寻找正确的正则表达式来查找 TAB (\t
) 字符少于 n 次的行。
我试过这个,但什么也没找到:
^.*(?:\t.*){0,20}\r\n
解决方法
您的模式在开头(在 .*
之后,字符串/行锚点的开头)包含一个 ^
,并且它尽可能多地匹配除换行符以外的任何零个或多个字符。因此,它可以匹配任意数量的选项卡。然后,(?:\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})
- 如果除了 CR、LF 和 TAB 之外有 21 次出现零个或多个字符且紧跟在当前位置右侧的 TAB 字符后,则匹配失败的负前瞻立> -
.*
- 该行的其余部分 -
\R?
- 可选的换行符序列(CRLF、LF 或 CR)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。