我对正则表达式世界还很陌生。
给定一个字符串列表作为输入,我想通过使用标点符号模式的正则表达式来分割它们:"[!.?\n]"
。
问题是,我想指定是否有多个标点符号在一起,如下所示:
输入:“我现在就想要!!!”
输出:“我现在就想要!!”
输入:“我还好吗?是的,我很好!!!”
输出:[“我还好吗”
,“是的,我很好!!”
]
最佳答案
你可以使用
[!.?\n](?![!.?\n])
这里,!
、.
、?
或换行符仅在后面不跟有任何这些字符时才匹配。
或者,如果字符必须重复:
([!.?\n])(?!\1)
此处,仅当后面没有完全相同的字符时,!
、.
、?
或换行符才会匹配。
请参阅regex demo #1和 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!!]
关于java - 如何使用使用给定模式最后一次出现的正则表达式来拆分Java中的字符串列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64784610/