正则表达式匹配问题求教

2022-11-25 17:56:52 +08:00
 sdenvi

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

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"
1185 次点击
所在节点    问与答
5 条回复
8yte
2022-11-25 18:14:16 +08:00
抛个砖先
(?<!import )['"].*?['"]
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
2022-11-25 21:57:12 +08:00
那我再修改一下楼上的
楼上的例子"TbrAPiC\"ac'h\"\\"e"
双斜杠在一起就不是转义引号了,所以应该匹配到倒数第二个引号
(?<!import *)(['"]).*?((?<!\\)|(?<=\\\\))\1
8yte
2022-11-25 21:58:36 +08:00
(?<!import *)(['"]).*?((?<!\\)|(?<=\\\\))\1

->

(?<!import\s*)(['"]).*?((?<!\\)|(?<=\\\\))\1
sdenvi
2022-11-28 10:33:03 +08:00
@8yte 学习到了,感谢回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/897935

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX