꧁༺๑追忆๑༻꧂ 2021-08-11 21:16 采纳率: 60%
浏览 69
已结题

根据不同的前后缀条件可以利用正则截取中间内容吗

例如 string str=“a张三bc李四de五f”;
截取成 张三 李四 王五

  • 写回答

4条回答 默认 最新

  • codeaftercode 2021-08-12 08:59
    关注

    正则表达式

    
    (a1|a2|a3)(.*?)(b1|b2|b3)(c1|c2|c3)(.*?)(d1|d2|d3)(e1|e2|e3)(.*?)(f1|f2|f3)
    

    说明:a,a2,a3表示张三的多种前缀字符串,b1,b2,b3表示张三的多种后缀字符串。如果还有更多的,加到括号里,中间用 | 分隔。
    用 $数字 的形式截取匹配的项。数字按照括号出现的顺序计算。

    string str="a1张三b1c2李四d2e1王五f2";
    System.out.println(str.replaceAll("(a1|a2|a3)(.*?)(b1|b2|b3)(c1|c2|c3)(.*?)(d1|d2|d3)(e1|e2|e3)(.*?)(f1|f2|f3)","$2 $5 $8"));
    

    如果bc之间、de之间还有其他字符,可以把正则表达式改成这样:

    (a1|a2|a3)(.*?)(b1|b2|b3).*(c1|c2|c3)(.*?)(d1|d2|d3).*(e1|e2|e3)(.*?)(f1|f2|f3)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月20日
  • 已采纳回答 8月12日
  • 创建了问题 8月11日

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示