Java 替换一个句号\\。用空格\\。空间
我想分开一个句号,如果它看起来像一个句号 我解决的第一个问题是:Java 替换一个句号\\。用空格\\。空间,java,regex,Java,Regex,我想分开一个句号,如果它看起来像一个句号 我解决的第一个问题是: // space period if followed by Capital letter having spaces before or not. original = original.replaceAll("\\.(\\s?[A-Z])", " . $1"); 这将完美地解决以下情况: “Hello World。这是对SWAT团队的测试。这是另一个短语。美国和EU以及U. K都没有评论。”http://a.a.br” 《你
// space period if followed by Capital letter having spaces before or not.
original = original.replaceAll("\\.(\\s?[A-Z])", " . $1");
这将完美地解决以下情况:
“Hello World。这是对SWAT团队的测试。这是另一个短语。美国和EU以及U. K都没有评论。”http://a.a.br”
《你好世界》。这是对SWAT团队的测试。这是另一个短语。美国和EU以及U. K都没有评论过。http://a.a.br”
现在,注意到它将“你好,这个…”和“…特警队,这里是”分开。还请注意,它没有损坏URL
但是,它没有修复“…对其进行了注释。http://a.a.br
“应该是哪一个”…注释了它。http://a.a.br
“但世界需要它。后跟一个小写的http。“
现在,如果单词next有空格和小写字母,或者甚至是一个数字,我希望它像另一个一样分隔句点,前提是句点前面有一个小写字母
因此,情况如下:
1) ”“是的。http“应该是”它。http“
2) ”“是的。12“应该是”它。12“
现在必须在不损坏URL或电子邮件地址的情况下执行此操作。运行第一条规则“\(\s?[A-Z])不会损坏电子邮件地址和URL
此外,第1条规则“\(\s?[A-Z])”的问题是,如果大写字母[A-Z]前没有空格和大写字母,而是有换行符,该怎么办
所以它是“这个句子。\n这个句子。”它应该是“这个句子”\“那句话。”
我怎么做
谢谢!您可以按如下方式更新正则表达式以实现此目的:
original = original.replaceAll("\\.(\\s[A-Za-z0-9])", " .$1")
“\s”与空白字符匹配,因此应该能够处理“\n”。
看
测试使用
它是python语言,适用于所有情况。根据您的要求:
String test = "Hello World. This is a Test of the SWAT Team.Here's another phrase. Both USA and EU as well as UK have not commented it. http://a.a.br";
test = test.replaceAll("\\.((?:\\s?[A-Z])|(?: (?:[a-z]|\\d)))", " . $1");
System.out.println(test);
输出为:
Hello World . This is a Test of the SWAT Team . Here's another phrase . Both USA and EU as well as UK have not commented it . http://a.a.br
Hello World . This is a Test of the SWAT Team . Here's another phrase . Both USA and EU as well as UK have not commented it . http://a.a.br