如何使用使用给定模式的最后一次出现的正则表达式拆分 Java 中的字符串列表?
How to split a List of Strings in Java with a regex that uses the last occurrence of given Pattern?
我是正则表达式世界的新手。
给定一个字符串列表作为输入,我想通过使用标点符号模式的正则表达式来拆分它们:"[!.?\n]"
.
问题是,如果有多个标点符号在一起,我想说明一下:
输入:"I want it now!!!"
输出:"I want it now!!"
输入:"Am I ok? Yeah, I'm fine!!!"
输出:["Am I ok"
、"Yeah, I'm fine!!"
]
您可以使用
[!.?\n](?![!.?\n])
此处,!
、.
、?
或换行符只有在后面没有跟这些字符中的任何一个时才被匹配。
或者,如果字符必须重复:
([!.?\n])(?!)
此处,!
、.
、?
或换行符只有在后面没有完全相同的字符时才会被匹配。
参见regex demo #1 and the regex demo #2。
看到一个Java demo:
String p = "[!.?\n](?![!.?\n])";
String p2 = "([!.?\n])(?!\1)";
String s = "I want it now!!!";
System.out.println(Arrays.toString(s.split(p))); // => [I want it now!!]
System.out.println(Arrays.toString(s.split(p2))); // => [I want it now!!]
s = "Am I ok? Yeah, I'm fine!!!";
System.out.println(Arrays.toString(s.split(p))); // => [Am I ok, Yeah, I'm fine!!]
System.out.println(Arrays.toString(s.split(p2))); // => [Am I ok, Yeah, I'm fine!!]
String 的 split() 方法接受正则表达式作为分隔符。
参考:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
示例:
String str = "Am I ok? Yeah, I'm fine!!!";
String delimiters = "[!.?\n]";
String[] splitted = str.split(delimiters);
for(String part : splitted) {
System.out.print(part + "\n");
}
输出:
Am I ok
Yeah, I'm fine
我是正则表达式世界的新手。
给定一个字符串列表作为输入,我想通过使用标点符号模式的正则表达式来拆分它们:"[!.?\n]"
.
问题是,如果有多个标点符号在一起,我想说明一下:
输入:"I want it now!!!"
输出:"I want it now!!"
输入:"Am I ok? Yeah, I'm fine!!!"
输出:["Am I ok"
、"Yeah, I'm fine!!"
]
您可以使用
[!.?\n](?![!.?\n])
此处,!
、.
、?
或换行符只有在后面没有跟这些字符中的任何一个时才被匹配。
或者,如果字符必须重复:
([!.?\n])(?!)
此处,!
、.
、?
或换行符只有在后面没有完全相同的字符时才会被匹配。
参见regex demo #1 and the regex demo #2。
看到一个Java demo:
String p = "[!.?\n](?![!.?\n])";
String p2 = "([!.?\n])(?!\1)";
String s = "I want it now!!!";
System.out.println(Arrays.toString(s.split(p))); // => [I want it now!!]
System.out.println(Arrays.toString(s.split(p2))); // => [I want it now!!]
s = "Am I ok? Yeah, I'm fine!!!";
System.out.println(Arrays.toString(s.split(p))); // => [Am I ok, Yeah, I'm fine!!]
System.out.println(Arrays.toString(s.split(p2))); // => [Am I ok, Yeah, I'm fine!!]
String 的 split() 方法接受正则表达式作为分隔符。
参考:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
示例:
String str = "Am I ok? Yeah, I'm fine!!!";
String delimiters = "[!.?\n]";
String[] splitted = str.split(delimiters);
for(String part : splitted) {
System.out.print(part + "\n");
}
输出:
Am I ok
Yeah, I'm fine