正则大佬进来看看,被正则折磨死了,如何匹配除了某个关键词的所有字符? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ioc

正则大佬进来看看,被正则折磨死了,如何匹配除了某个关键词的所有字符?

  •  
  •   ioc 2017 年 8 月 20 日 2272 次点击
    这是一个创建于 3170 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如关键字为 abc,那么:

    * 不匹配:
    * abc
    * 会匹配:
    * 若干字符+abc,例如:zzxx123abc
    * abc+若干字符,例如:abczzxx123
    * 若干字符+abc+若干字符,例如:abczzxx123abczzxx
    * 任意字符,例如:asdaexx111fzcsd,123aaaa1223

    也就是说除了 abc 不匹配外,其他 **任何** 字符串都是完全匹配。

    昨天看了一晚上正则,只试出来了这个最接近目标 `(?!abc).*`,但是不完美。

    这个目标能够实现吗?
    ioc
        1
    ioc  
    OP
       2017 年 8 月 20 日 via Android
    我记得我是用 Markdown 编辑的啊。。
    code42
        2
    code42  
       2017 年 8 月 20 日   1
    能!但是不优雅:
    '[^a].*|a[^b].*|ab[^c].*|abc.+'


    PS:
    前几天遇到类似问题(将不符合某个模式的行挑出来),没能想出来好用的正则,就换种思路了。
    如下:(也不想为这点小事写个 python 脚本什么的,只希望快速搞定,一行命令行那是最好的:)
    ~ cat data.txt
    abc
    zzxx123abc
    abczzxx123
    abczzxx123abczzxx
    asdaexx111fzcsd
    123aaaa1223

    ~ awk '!/^abc$/ { print $0 }' data.txt
    zzxx123abc
    abczzxx123
    abczzxx123abczzxx
    asdaexx111fzcsd
    123aaaa1223

    如果你的需求和我类似,完全可以使用这种方式。
    fox0001
        3
    fox0001  
       2017 年 8 月 20 日
    天啊,直接判断不等于字符串“ abc ”就可以了吧?
    ioc
        4
    ioc  
    OP
       2017 年 8 月 20 日 via Android
    @code42 awk 倒是能够直接取反,可这恶心的正则就没直接点的取反语法。模式串一长就尴尬了,只能凑合用了,感谢。
    @fox0001 SpringMVC 的 @RequestMapping 路径匹配,不能直接获取的。
    ioc
        5
    ioc  
    OP
       2017 年 8 月 20 日 via Android
    @code42 测试中发现,不能匹配到 a 和 ab,请问如何解决?
    code42
        6
    code42  
       2017 年 8 月 20 日
    @ioc 果不其然(不优雅的解,总是可能潜伏着 bug )
    '(?:^(?:a|ab)$)|[^a].*|a[^b].*|ab[^c].*|abc.+'
    walleL
        7
    walleL  
       2017 年 8 月 20 日 via Android
    另外配一个路径只匹配 abc
    行吗?
    br00k
        8
    br00k  
       2017 年 8 月 20 日   1
    没太看明白。。试试这个^((?!abc)|abc).+$
    code42
        9
    code42  
       2017 年 8 月 20 日
    @br00k 这大概是最优雅的解了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2799 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 10:01 PVG 18:01 LAX 03:01 JFK 06:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86