如何解决忽略 Npp 正则表达式中的特定字符
我正在使用 Notepad++ 风格的正则表达式。这...
Find: ([^`]{1,23} )
Replace: $0\n
...接受这个输入字符串...
现在是所有好人都来帮助党的时候了。
...并产生这个输出字符串:
现在是时候了
好人来了
党的援助。
它将字符串拆分为 24 个或更少的非反引号 (`) 字符的行,并在空格后拆分。仅当输入字符串的最后一个字符也是空格字符时才有效。
这个字符串...
现在是所有好人█前来参加派对的时候了。
...分裂方式不同。
现在是时候了
好人█来
派对的帮助。
我正在寻找一种跳过 █ 个字符的方法 - 处理输入字符串,就好像 █ 不存在一样。
[注:`(反引号)字符被保留用于包含文本格式标签,稍后插入。 █ 个字符将用于表示“这段文本将在稍后插入标签”,因此它们将被压缩,但还没有。我在这里使用 █(完整块)来表示 Unicode 7F (del) 字符,因为 7F 无法正确显示。如果绝对必要,我也可以在 AHK 中使用 Perl 风格的正则表达式。]
这些正则表达式发现未能忽略█:
(([^`]|█?){1,23} )
((([^`])|(█)?){1,23} )
((([^`])|(?:█)){1,23} )
那么,有没有办法做到这一点?
解决方法
您可以使用以下模式:
(?:[^`█]█*){1,23}[ ]
这匹配除反引号或 full block 后跟零个或多个完整块字符之外的任何字符,并允许整个内容重复 1 到 23 次。这可确保完整的块字符不计入 {1,23}
量词。
Demo.
您也可以使用 Unicode 代码点(在我看来它看起来更好):
(?:[^`\x{2588}]\x{2588}*){1,23}[ ]
此外,如果(最后一个匹配的)最后一个字符不必是空格字符,您可以使用:
(?:[^`\x{2588}]\x{2588}*){1,23}(?: |$)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。