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));

    评论

报告相同问题?

悬赏问题

  • ¥15 luckysheet
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误