忽略 Npp 正则表达式中的特定字符

如何解决忽略 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?