文本批量提取
从一大段文本、一份复制来的网页、一堆日志里,把想要的那一类内容挑出来。和「文本行处理」不同,这里抓的是行里的片段而不是整行——一行里有三个网址就出三条。内置十几种常见目标,也可以直接写正则并指定取哪个捕获组。全部在浏览器本地跑,文本不上传。
各类目标的判定口径
- 网址与域名
- 网址认
http://、https://开头以及裸www.开头两种写法,结尾粘着的中英文句号、逗号、引号、右括号会被剥掉(HTML 里<a href="…">的引号也算)。域名则不要求带协议,按「至少一个点 + 2 到 24 位字母后缀」判定,所以a.jpg这类文件名不会被当成域名,但example.co会。 - 手机号与固话
- 手机号按中国内地号段判定:1 开头、第二位 3–9、共 11 位,前后不能再挨着数字,所以 18 位的身份证不会被截出一段当手机号。允许前面带
+86或86。固话按「0 开头的 3–4 位区号 + 7–8 位号码」,可带分机号。 - 身份证与银行卡
- 身份证先按 18 位结构匹配(地区码 + 合法出生日期 + 顺序码 + 校验位),再用 GB 11643 的加权模 11 验最后一位,验不过的不输出。银行卡按 13–19 位数字匹配后跑 Luhn 校验,同样不合格就丢掉——这两条能把日志里凑巧连在一起的长数字排除掉。
- IP 地址
- IPv4 会逐段校验每一段都在 0–255,
999.1.1.1不会被当成 IP。IPv6 匹配完整写法与含::的缩写,但不处理内嵌 IPv4 的混合写法。 - 自定义正则与捕获组
- 直接写正则本体,不要写两边的斜杠。全局匹配是默认开的,不用自己加
g。写了括号分组时,在「取哪一部分」里选第几组,就只输出那一组的内容——比如用"price":\s*([\d.]+)取第 1 组,能把 JSON 里的价格全扒下来。不要用后行断言((?<=…)),老版本 Safari 会直接报语法错。 - 「删掉命中的内容」怎么用
- 把处理方式切到第二项,输出的就不再是命中片段,而是原文去掉这些片段之后剩下的样子。用来批量清掉文本里的网址、手机号、表情或某段固定格式的噪音很方便,去重与排序这时不起作用。
- 相关工具
- 文本行处理、文本截取与拼接、文本批量替换、正则测试、常用正则速查库、网页内容提取。