考虑以下文本段落
保护组织称20年禁令对美国标志性物种具有至关重要的保护意义。采矿业和一些共和党议员表示,这对亚利桑那州的经济和美国的能源独立性有害。“尽管受到采矿业的巨大压力,但总统和沙拉扎尔国务卿并没有退缩,”皮尤环境集团美国公共土地主任简·丹诺威茨说。
在上述内容中,容易根据句号(.)分割句子,但是当处理U.S.A.中的句点时,这将导致不正确的结果。假设我有一个缩写列表。
保护组织称20年禁令对美国标志性物种具有至关重要的保护意义。采矿业和一些共和党议员表示,这对亚利桑那州的经济和美国的能源独立性有害。“尽管受到采矿业的巨大压力,但总统和沙拉扎尔国务卿并没有退缩,”皮尤环境集团美国公共土地主任简·丹诺威茨说。
在上述内容中,容易根据句号(.)分割句子,但是当处理U.S.A.中的句点时,这将导致不正确的结果。假设我有一个缩写列表。
String abbrev[] ={"u.s.a", "u.a.e", "u.k", "p.r.c","u.s.s.r", };
String regex= "\\.";
Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(sx);
int beginIndex=0;
// Check all occurance
int index=0;
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
String group=matcher.group();
System.out.println("group: " + group);
int dotIndex= group.indexOf(".");
String sub= sx.substring(beginIndex, matcher.start()+dotIndex);
beginIndex= matcher.start()+dotIndex;
System.out.println(sub);
}
我可以尝试使用所有在dotIndex周围的缩写进行暴力匹配。是否有更好的方法?
(?<!\.[a-z])\.\s
(需要在没有句点和字母前导的情况下有一个句点和空格)。 - Brad Christie