在一句混合字符串里面可能存在多个英文句号“.”,如何匹配适当位置的那个句号?

JavaNoob 2008-03-21 03:49:44
比如说字符串:
hello , go to <a href="http://www.csdn.net">CSDN</a> for more info. Good luck.

我要将一篇文章分成多个段落,由英文句号“.”分隔,例如上句我想这样分段:
段1 hello , go to <a href="http://www.csdn.net">CSDN</a> for more info.
段2 Good luck.

而不是这样:
段1 hello , go to <a href="http://www.
段2 csdn.
段3 net">CSDN</a> for more info.
段4 Good luck.

这里的连接代码只是举一个例,实际情况之中可能是其他一些标签,我应该怎样写正则表达式?或者有没其他方法?
...全文
217 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihuajie05 2008-03-21
  • 打赏
  • 举报
回复
这样的挖..学习了
dracularking 2008-03-21
  • 打赏
  • 举报
回复
这些! ?大部分是非捕获组

Special constructs (non-capturing)
(?:X) X, as a non-capturing group
(?idmsux-idmsux) Nothing, but turns match flags on - off
(?idmsux-idmsux:X) X, as a non-capturing group with the given flags on - off
(?=X) X, via zero-width positive lookahead
(?!X) X, via zero-width negative lookahead
(?<=X) X, via zero-width positive lookbehind
(?<!X) X, via zero-width negative lookbehind
(?>X) X, as an independent, non-capturing group
dracularking 2008-03-21
  • 打赏
  • 举报
回复
颇复杂
String str = "hello, go to <a href=\"http://www.csdn.net\" aaa=\"aaaa.aa...dfa\">CSDN</a>." +
" for more info." +
" how are <hello name=\'java.import.com\' aa=\"adf.aad\\\"ad.asd.adf\" bb=\"abc.abc.add\">aaa</hello>you." +
" Good luck. ";

String regex = "(?<=\\w|>)(\\.)(?=\\s*)(?![^\"']*(\\\\.[^\"']*)*['\"][ >])";

String result = str.replaceAll(regex, "$1\n");
System.out.println(result);
JavaNoob 2008-03-21
  • 打赏
  • 举报
回复
上面的?和!是什么作用的?我看资料说?是贪婪,具体意义我其实不太懂,!还没找到,如果bao110908师傅有时间的话希望可以稍作解释。。。
JavaNoob 2008-03-21
  • 打赏
  • 举报
回复
非常感谢,很有学习价值,谢谢!
  • 打赏
  • 举报
回复
看看这个能用吗?

public class Test{

public static void main(String args[]) {
String str = "hello, go to <a href=\"http://www.csdn.net\" aaa=\"aaaa.aa...dfa\">CSDN</a>." +
" for more info." +
" how are <hello name=\'java.import.com\' aa=\"adf.aad\\\"ad.asd.adf\" bb=\"abc.abc.add\">aaa</a>you." +
" Good luck. ";
String regex = "(?<=\\.)\\s*(?![^\\\"']*(?:\\\\.[^\\\"']*)*['\"]\\s*[ >])";
String[] strs = str.split(regex);
for(String s : strs) {
System.out.println(s);
}
}
}
lijie_ai 2008-03-21
  • 打赏
  • 举报
回复
才学,不太懂
zhaining522 2008-03-21
  • 打赏
  • 举报
回复
用 String 类中的
indexof() 和 subString(begin , length)

这2个方法就能实现 具体怎么写 自己动动脑子好好想想
对你有好处

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧