java字符串正则表达式分隔符

java字符串正则表达式分隔符,java,regex,string,Java,Regex,String,我对regex几乎没有经验,所以请提前感谢 我有一根绳子 Doe Jane,Doe John。苏伊斯博士的作品。哈佛出版社(1984年) 我正在使用string.split(regex)根据我提供的正则表达式将字符串拆分为字符串[]。我想把它分成作者,标题,出版信息。问题在于,使用[.]在Dr.too之后将其分解 我如何编写一个regext来包含“.”,但不包括像“Dr.”或“Mr.”这样的内容 谢谢您可以使用反向查找: (?<!Dr|Mr)\. (?像这样使用负lookbehind正则

我对regex几乎没有经验,所以请提前感谢

我有一根绳子

Doe Jane,Doe John。苏伊斯博士的作品。哈佛出版社(1984年)

我正在使用string.split(regex)根据我提供的正则表达式将字符串拆分为字符串[]。我想把它分成作者,标题,出版信息。问题在于,使用[.]在Dr.too之后将其分解

我如何编写一个regext来包含“.”,但不包括像“Dr.”或“Mr.”这样的内容


谢谢

您可以使用反向查找:

(?<!Dr|Mr)\.

(?像这样使用负lookbehind正则表达式:

str.split("(?<!(D|M|J|S)r)\\.\\s*");

我建议使用专门的软件包来解析书目条目,例如

我已经尝试过他们的Web界面,它似乎能够正确地分析您的示例


使用正则表达式时,您将面临一场艰难的斗争,因为您必须找出并解释标题中句号的每一种可能用法。

这必须使用某种消极的回顾,如本示例中所示:

String input = "Doe Jane, Doe John. The Works of Dr. Suess. Harvard Press(1984)";
String [] tokens = input.split("(?<!Dr|Mr)\\.");
for(String token : tokens){
        // this will output3 tokens
    System.out.println(token);
}
String input=“Doe Jane,Doe John.Suess博士著作,哈佛出版社(1984年)”;

String[]tokens=input.split(“(?)如果你想为书目条目编写一个通用解析器,你必须想出比正则表达式更“聪明”的东西。只使用正则表达式意味着它必须考虑每一个可能的以句点分隔的缩写,这基本上是不可行的。
Mr. Doe Jane, Doe John Sr.
The Works of Dr. Suess
Harvard Press(1984)
String input = "Doe Jane, Doe John. The Works of Dr. Suess. Harvard Press(1984)";
String [] tokens = input.split("(?<!Dr|Mr)\\.");
for(String token : tokens){
        // this will output3 tokens
    System.out.println(token);
}