考虑捕获组的 Java 模式拆分

标签 java regex

我需要分割一个传递正则表达式的字符串,但分割标记只是正则表达式的第 1 组。一个例子:

原始字符串 = “paulo\\;Is\\;In;Real;Doubt”

使用 split = ["paulo\\;Is\\;In", "Real", "Doubt"] 形成的数组

我的第一个想法是用作正则表达式:[^\\\\][;],但它显然不起作用。

输出为:["paulo\\;Is\\;I", "Rea", "Doubt"](我正在使用String.split()方法。)

我的第二个想法是使用 ; 作为一个组:[^\\\\]([;]),但我只是无法告诉split 方法仅将 group(1) 视为拆分 token 。

最佳答案

你的问题很难回答,因为它完全不清楚。您说您的分割 token “只是正则表达式的第 1 组”。什么正则表达式的第 1 组?

编辑:仍然很难回答,为什么不澄清一下?

无论如何,如果您想要的是“在 ';' 上拆分,但仅当它不使用 '\' 转义时”,那么您可以使用负向后查找来获得您想要的。

示例:

"paulo\\;Is\\;In;Real;Doubt".split("(?<!\\\\);");

给出

[ "paulo\;Is\;In", "Real", "Doubt" ]

关于考虑捕获组的 Java 模式拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740530/

相关文章:

java - 如何将由 ENTER 键(在 .txt 中)分隔的行(从 .txt 读取)添加到字符串 arrayList 的单独元素中?

java - 从网页获取纯html内容

Java 和 dom (org.dom4j)

css - 如何在atom编辑器中使用正则表达式组合CSS中的冗余类

java - 使用正则表达式过滤文本中具有某些特定条件的电子邮件地址

java - 正则表达式 1 到 8 个字符的条件不起作用

java - getSharedPrefernces 仅在一个 Activity 中返回 null,而该 Activity 在另一个 Activity 中运行良好

java - 表列名称 - NetBeans IDE

javascript - 使用具有零宽度lookbehind的正则表达式在JavaScript中分割字符串

javascript - 排除正则表达式模式中仅由制表符组成的空格