I7707557 2016-01-13 02:27 采纳率: 25%
浏览 1409

求助正则达人一个棘手的简单问题

文本内容如下:

节点1
节点2
节点3
节点4
节点5
节点6

需求:想要匹配 以“节点2"为开头起始,以"节点4"【或】"节点5"为结束字符串之间的文本(以最近的一个结束字符串为准<例子中期待匹配的内容是【节点4】>)

自己写的垃圾式子: “ 节点2([\s\S]*)(?:节点4|节点5) ”
结果集中取$1的结果,但是取出内容是“【节点3 节点4】”
上面的结果不是我想要的,我想要的是匹配结果为 “【节点3】”,即,以距离节点2最近的节点4位匹配结果,想要实现当匹配了 节点2->节点4 就不匹配 节点2 -> 节点5 之间的内容了
ps::有没有比类似 节点2(^节点4|节点5)(?:节点4|节点5) 更好的表达式

  • 写回答

3条回答 默认 最新

  • 男哥 2016-01-13 03:03
    关注

    String str = "节点2节点3节点5节点4";
    String match = "^节点2{1}.*(节点5|节点4){1}$";//以节点2 开始,节点4或节点5结束
    System.out.println(str.matches(match));

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大