V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
sdenvi
V2EX  ›  问与答

正则表达式匹配问题求教

  •  
  •   sdenvi · Nov 25, 2022 · 1628 views
    This topic created in 1249 days ago, the information mentioned may be changed or developed.

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

    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 replies    2022-11-28 10:33:03 +08:00
    8yte
        1
    8yte  
       Nov 25, 2022 via Android
    抛个砖先
    (?<!import )['"].*?['"]
    ETiV
        2
    ETiV  
       Nov 25, 2022
    接 LS 的改改…

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

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

    ->

    (?<!import\s*)(['"]).*?((?<!\\)|(?<=\\\\))\1
    sdenvi
        5
    sdenvi  
    OP
       Nov 28, 2022
    @8yte 学习到了,感谢回复
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3584 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:08 · PVG 19:08 · LAX 04:08 · JFK 07:08
    ♥ Do have faith in what you're doing.