前言
今天在chatgpt上找找有什么比赛可以参加。下面是它给我的部分答案,我想将其制成文档裱起来,并突出比赛名方便日后查找。
这时理所当然地想到了查找替换功能,但是当我启用时却发现正则匹配居然没有了,现在只有通配匹配了。
使用过后发现其基本使用规则还是和正则挺像的,但有部分功能还是有差异。下文将详细描述其异同,并攻略通配匹配功能。
通配匹配攻略
注意:通配有两个大坑:
1、无法进行贪婪匹配 (任意多字符*
除外)
2、不会特殊识别回车
、换行
、空格
等等特殊字符
因此通配最好用投机取巧的方式进行匹配,不宜硬刚
相同点
1、 匹配规则相似,虽然转义字符不同,但语法格式一致。
字符 | 正则 | 通配 |
---|---|---|
XX省 | ..省 或 .{2}省 | ??省 或 ?{2}省 |
单个字母或数字 | [0-9 a-z A-Z] | [0-9 a-z A-Z] |
n到m个寄 | 寄{n,m} | 寄{n,m} |
相异点
1、 通配符相异。
字符 | 正则 | 通配 | 注释 |
---|---|---|---|
任意单个字符 | . | ? | 正则中不包含换行符 |
任意多个字符 | .* | * | 正则中不包含换行符 |
多个x(贪婪) | x+ | x{1,} | 通配存在重复匹配现象 |
不包含x字符(贪婪) | [^x]+ | [!x]{1,} | 通配存在重复匹配现象 |
转义字符 | \ | \ 和 ^ | |
以x开头 | ^x | <x | |
以y结尾 | y$ | y> |
2、 通配规则适用范围小于正则规则。
如上面所说,正则匹配时多半会以"换行"和"回车"符号分段匹配,即搜索中遇"换行"和"回车"自动停止搜索。
3、 通配规则不适用贪婪查找,任意多字符*
除外。其他表达式都是最小查找。
通配符
参考下列文章:
word和wps常用通配符和正则批量查找替换内容技巧
MS Office WORD中特殊字符及标记的查找与替换
Word中查找/替换通配符和代码
实战案例
匹配每段中**之间的字符
(形如:**大学生**、**某某大赛**等)
当我们直接选用以下代码时都会出现跨段落选取的问题:
(\*\*)*(\*\*)
(\*\*)[!^p]@(\*\*)
第二例失败的原因在于中括号只会进行单个字符的识别,所以所有转义字符都不能被中括号识别,同样也不能被反选!
符号作用。因此在这种时候我们要学会变通:
(\*\*)[!:]@(\*\*)
观察上下文可知,每段应识别字符后都会接:
,因此我们只要拒绝对其的识别便能避免跨段落选取。
注:正则匹配不会出现跨段选取的问题,因此直接使用第一种识别即可:
/(\*\*).*(\*\*)/