LSDJY 2022-03-16 22:23 采纳率: 44.4%
浏览 42
已结题

Linux中正则表达式的相关问题

img


有没有dl帮帮忙,ls出了一个题,使用正则表达式在b.txt中过滤出,“1122”和“aabb”但我试了,无论如何都会出现四个a为什么啊,我是不是哪里错了,各路dl,了,我已经想了一天了,真不会啊

  • 写回答

3条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-03-17 00:27
    关注

    前2位相同,但第3位和第一位不同,第4位也和第一位不同?
    调试正则推荐一个网站

    img

    从这里可以看到,你后面的"\1"已经不代表第一个分组了,所以错了

    至于正确的正则表达式应该是怎样的,你先说下老师的原题是什么吧


    我上面的回答已经告诉你错在哪里了,那个中括号里的"\1"已经不是代表第一个分组了,而是代表的字符"1",所以你“1111”没选出来的原因其实是因为你写的这个就是后两位不为"1",如果它来一个"2222"照样会被你这个表达式找出来。至于正确答案,楼下的已经说了,要用"?!".
    另外,如果你老师的原话是说找出"1122"和"aabb",那你直接找这两个字符串不就好了?她又没说是找形如"aabb"结构的字符串,也没说是否可以字母数字混用,比如"aa11"


    如果后面两个字符要一样的话,楼下的答案也会有问题,你用我下面贴的这个应该就没问题了,注意我这里修改了正则匹配模式

    cat test_regexp.txt | grep -Pwe '^([0-9])\1(?!\1\1)([0-9])\2$'
    

    img

    下面这个题里写了关于linux的负向先行断言( negative lookahead assertion)

    There is no negative lookahead assertion in POSIX extended regular expressions, which is the syntax grep -E activates.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月16日

悬赏问题

  • ¥15 MATLAB代码补全插值
  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
  • ¥15 前后端分离的学习疑问?
  • ¥15 stata实证代码答疑
  • ¥50 husky+jaco2实现在gazebo与rviz中联合仿真
  • ¥15 dpabi预处理报错:Error using y_ExtractROISignal (line 251)
  • ¥15 在虚拟机中配置flume,无法将slave1节点的文件采集到master节点中
  • ¥15 husky+kinova jaco2 仿真
  • ¥15 zigbee终端设备入网失败
  • ¥15 金融监管系统怎么对7+4机构进行监管的