我正在尝试编写一个正则表达式,它将捕获所有内容,直到点或逗号,并且我正在使用命名组来执行此操作。
这就是我所拥有的:
String pattern = "(?<Words>(?=,|.))";
String text = "Part one, part two. Part three";
Matcher m = Pattern.compile(pattern).matcher(text);
while (m.find()) {
System.out.println(m.group("Words"));
}
我想捕获“第一部分”,因为它是第一个逗号之前的所有内容。然后捕获所有内容,直到第一个点,即“第二部分”。我的代码中的正则表达式似乎不起作用,它没有输出任何内容,我不确定我在这里缺少什么。
答案 0 :(得分:1)
如果您想使代码适应工作,请转到:
String pattern = "(?<Words>[^ ,.][^,.]*(?=(,|\\.)))";
String text = "Part one, part two. Part three";
Matcher m = Pattern.compile(pattern).matcher(text);
while (m.find()) {
System.out.println(m.group("Words"));
}
[^ ,.]
表示以非空格,逗号或句点字符开头
[^,.]*
表示任意数量的非逗号或句号字符
(?=(,|\\.))
是逗号或句号的正面预测,必须对其进行转义,因为正则表达式中的.
是一个特殊字符,表示“除了换行符之外的任何内容”
你的工作不起作用,因为在你积极展望之前你什么都没有。
答案 1 :(得分:0)
如何在此处使用方法String.split
。
String pattern = "[,|\\.]";
String text = "Part one, part two. Part three";
String[] strsBySplit = text.split(pattern);
for (String s : strsBySplit) {
System.out.println(s.trim());
}