V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sdenvi
V2EX  ›  问与答

正则表达式匹配问题求教

  •  
  •   sdenvi · 2022-11-25 17:56:52 +08:00 · 1186 次点击
    这是一个创建于 730 天前的主题,其中的信息可能已经有所发展或是发生改变。

    能否使用一条正则表达式匹配并过滤如以下文本:

    import 'dart:convert';
    import 'dart:io';
    import 'dart:math';
     class Api {
       static String getData = '/api/User/getMe';
    }
    static  String name = "TbrAPiCache";
    

    使用正则匹配到单引或者双引的内容的同时,过滤包含 import 的行,匹配到的内容如下:

    '/api/User/getMe'
    "TbrAPiCache"
    
    5 条回复    2022-11-28 10:33:03 +08:00
    8yte
        1
    8yte  
       2022-11-25 18:14:16 +08:00 via Android
    抛个砖先
    (?<!import )['"].*?['"]
    ETiV
        2
    ETiV  
       2022-11-25 20:06:01 +08:00
    接 LS 的改改…

    (?<!import )(?=\s*)(['"]).*?(?<!\\)\1 ,用这个可以让 [赋值时字符串的单双引号成对儿出现]

    static String name = "TbrAPiCache'; # 双引号+单引号 = 匹配不到
    static String name = "TbrAPiC\"ac'h\"\\"e"; # 前后都是双引号 = 可以匹配到
    8yte
        3
    8yte  
       2022-11-25 21:57:12 +08:00
    那我再修改一下楼上的
    楼上的例子"TbrAPiC\"ac'h\"\\"e"
    双斜杠在一起就不是转义引号了,所以应该匹配到倒数第二个引号
    (?<!import *)(['"]).*?((?<!\\)|(?<=\\\\))\1
    8yte
        4
    8yte  
       2022-11-25 21:58:36 +08:00
    (?<!import *)(['"]).*?((?<!\\)|(?<=\\\\))\1

    ->

    (?<!import\s*)(['"]).*?((?<!\\)|(?<=\\\\))\1
    sdenvi
        5
    sdenvi  
    OP
       2022-11-28 10:33:03 +08:00
    @8yte 学习到了,感谢回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5646 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 06:48 · PVG 14:48 · LAX 22:48 · JFK 01:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.