2

我有一个大文本字符串,我试图将其拆分为基于“。?!”的句子。但是我的正则表达式无法正常工作,有人可以指导我检测错误吗?

String str = "When my friend said he likes deep dish pizza one day, I immediately set a time to come back to Little Star. Arguably, the best deep dish pizza in SF...though...I don't believe there are many places that do deep dish pizza. That being said...its not the BEST ever, just the best for the area. They use cornmeal in the crust, or on the baking surface, so there's a bit of extra crunch to it. That being said...I'm not sure how much I like the cornmeal texture to my pizza. I kind of want just a GOOD CRUST, you know? No extra stuff to try to make it more crunchy.";
String[] sentences = str.split("/(?<=[.?!])\\S+(?=[a-z])/i");

但它不是拆分句子。有人可以检测到错误吗?

4

2 回答 2

2

你有错误的正则表达式。Java 不理解这种 PCRE 类型正则表达式的正则表达式:

/(?<=[.?!])\\S+(?=[a-z])/i

用这个:

String[] sentences = str.split("(?i)(?<=[.?!])\\S+(?=[a-z])");
于 2013-07-15T12:57:32.890 回答
2

这里有一个小提示:

斜杠与正则表达式无关

斜杠是 *some+ 语言的应用程序语言工件。Java 不是其中之一。

尝试删除斜线并将尾随的“/i”替换为“(?i)”:

String[] sentences = str.split("(?i)(?<=[.?!])\\S+(?=[a-z])");
于 2013-07-15T12:58:41.143 回答