正则表达式RegExp语法与用法超全详解:新手快速上手的实战技巧

文章目录CloseOpen

    • RegExp基础语法:把“天书符号”变成“好用工具”
    • RegExp实战技巧:3个新手必用场景,立刻解决工作麻烦
      • 正则表达式里的点(.)到底能匹配什么?
      • 怎么用正则快速提取手机号?
      • 正则里的星号()和加号(+)有什么区别?
      • 乱码怎么用正则快速清理?
      • 正则里的括号(())有什么用?

    这篇文章就是给新手搭的“正则桥梁”:不绕复杂术语,直接把RegExp的核心逻辑拆碎了讲——先搞懂元字符(比如“.”代表任意字符、“”代表重复0次或多次)、量词(怎么控制“匹配1次”还是“匹配任意次”)这些基础;再进阶到分组(把内容打包处理)、断言(精准定位“前面是XX”“后面是XX”的内容);每一步都配了能直接复制用的实战例子——比如怎么用正则快速提取聊天记录里的日期,怎么批量替换文章里的错别字,甚至怎么从PDF里抠出所有邮箱地址。

    没有“假大空”的理论,只讲“能立刻用”的技巧。看完你会发现:原来正则不是“难啃的骨头”,而是能帮你解决实际问题的“小帮手”,下次遇到文本处理的麻烦,直接用正则就能搞定!

    你有没有过这种情况?想从一堆用户评论里抠出“物流慢”的反馈,翻了几百条眼睛都酸了;或者想批量改文章里的“的地得”错误,复制粘贴了几十次还没改完?我去年帮朋友的电商店铺整理售后记录时就遇到这问题——5000条售后单里要找“商品破损”的案例,手动翻了3小时才弄了100条,差点没崩溃。后来才发现,正则表达式RegExp就是解决这种“文本处理麻烦”的“神器”——花2天学会基础,现在处理同样的任务只要5分钟,连朋友都夸我“效率开挂”。

    RegExp基础语法:把“天书符号”变成“好用工具”

    很多人一看到RegExp的符号就头疼:“.?、[]、()这些东西跟天书似的,怎么学啊?”其实我刚开始也这么想,但后来发现,这些符号本质上是“文本的暗号”——把你想找的规律变成机器能听懂的语言。我把最常用的基础语法拆成3个部分,用“说人话”的方式讲清楚,你跟着练一遍就能记住。

  • 元字符:学会“用符号代替文字”
  • 元字符是RegExp的“基础密码”,比如.(点)、^(帽号)、$(美元符)、(反斜杠),每个都有明确的“任务”。我记这些符号时编了个口诀:“点任意,帽开头,dollar 反斜杠找特殊”,现在闭着眼都能想起来。

  • .(点):代表“任意一个字符”——比如你想找“a开头、b 中间任意一个字”的词,用a.b就能匹配“acb”“aeb”“a1b”;
  • ^(帽号):代表“字符串的开头”——比如想找所有以“尊敬的”开头的邮件称呼,用^尊敬的就能精准定位;
  • $(美元符):代表“字符串的 ”——比如想找以“谢谢” 的客户回复,用谢谢$就能把“非常感谢”“谢谢”都找出来;
  • (反斜杠):用来“转义”特殊字符——比如你想找“.”这个符号本身(不是“任意字符”),就得用.,比如www.baidu.com才能匹配“www.baidu.com”。
  • 我之前帮一个自媒体作者改标题时,他想把所有以“【福利】”开头的标题挑出来,用^【福利】一下子就找出了20篇,比手动翻快了10倍。你也可以试试:打开一个文本文件,输入“【福利】今天送口红”“【活动】明天有优惠”,用^【福利】查找,肯定能精准定位第一条。

  • 量词:控制“匹配多少次”的小技巧
  • 元字符是“找什么”,量词就是“找多少”——比如(星号)、+(加号)、?(问号)、{n}(大括号),这些符号能帮你“控制范围”。我刚开始记不住区别,就用“吃饭”打比方:

  • (星号):“吃0碗或多碗”——比如促销能匹配“促销”(0次补充)、“促销中”(1次补充)、“促销活动”(2次补充);
  • +(加号):“至少吃1碗”——比如促销+只能匹配“促销中”“促销活动”,不能匹配“促销”(因为需要至少1次补充);
  • ?(问号):“吃0碗或1碗”——比如折扣?能匹配“折扣”(0次补充)、“折扣券”(1次补充),但不能匹配“折扣券码”(2次补充);
  • {n}(大括号):“正好吃n碗”——比如d{11}(d是数字)就是“正好11位数字”,用来找手机号再合适不过。
  • 我之前帮物业公司做业主信息整理时,要找“11位手机号”,用d{11}一下子就从500条信息里找出了480个,剩下20个是没填的——比手动翻快了整整10倍。你可以自己验证:打开一个文本文件,输入“13812345678”“13987654321”“12345”,用d{11}查找,前两个会被找到,最后一个不会(因为只有5位)。

  • 字符类:把“同类文字”打包处理
  • 字符类是“批量找同类”的技巧——用[](方括号)把同类字符装起来,比如[abc]代表“找a、b或c中的任意一个”,[0-9]代表“找0到9的数字”(和d一样),[^abc]代表“找不是a、b、c的字符”。

    我上次帮朋友的美食博客整理菜单时,要找“辣”相关的菜名——比如“麻辣火锅”“香辣小龙虾”“酸辣粉”,用正则[麻香酸]辣就能把这些菜名都找出来,比分别找“麻辣”“香辣”“酸辣”省了好多事。再比如想找“非数字”的字符,用[^0-9]就能把文本里的汉字、符号都挑出来——我帮客户清理Excel里的乱码时就用了这个,把“123abc”里的“abc”都删掉了。

    为了让你更清楚,我把常用的基础语法做成了表格,你可以保存下来随时查:

    符号 含义 例子 匹配结果
    . 任意1个字符 a.b acb、aeb、a1b
    ^ 开头 ^你好 你好呀、你好,请问
    $ 谢谢$ 非常感谢、谢谢
    0次或多次 促销 促销、促销中、促销活动
    {11} 正好11次 d{11} 13812345678、13987654321

    RegExp实战技巧:3个新手必用场景,立刻解决工作麻烦

    学会基础语法还不够,得“用起来”才有用——我整理了3个工作里最常遇到的场景,每个都有“step by step”的步骤,你跟着做就能立刻解决问题。

  • 1分钟提取1000条手机号:再也不用手动翻
  • 我去年帮物业公司做业主信息整理时,遇到最头疼的就是“提取手机号”——500条业主信息里,手机号散在“备注”“联系电话”“紧急联系人”三个字段里,手动翻要1小时。后来用RegExp,1分钟就搞定了:

    步骤1:打开Excel(或Notepad++、VS Code),找到“查找替换”功能(Excel里是“Ctrl+F”,Notepad++里是“Ctrl+H”); 步骤2:勾选“正则表达式”选项(Excel里在“查找”tab下的“选项”里,Notepad++里在“替换”tab下); 步骤3:输入正则表达式d{11}(d是数字,{11}是正好11位); 步骤4:点击“查找全部”,所有手机号就会以列表形式显示出来,直接复制粘贴到新表格就行。

    你可以自己试:打开Excel,输入“业主姓名:张三,电话:13812345678”“业主姓名:李四,电话:13987654321”,用d{11}查找,肯定能把两个手机号都找出来——比手动复制快10倍。

  • 5分钟批量改100篇文章标题:再也不用复制粘贴
  • 我朋友是做自媒体的,上个月想把所有标题里的“福利”改成“优惠”,100篇文章手动改要1小时,用RegExp5分钟就搞定了:

    步骤1:打开Notepad++,把所有标题复制进去; 步骤2:按“Ctrl+H”打开替换窗口,勾选“正则表达式”; 步骤3:“查找内容”输入福利(或者更精准的(福利),用括号把要替换的内容包起来); 步骤4:“替换为”输入优惠,点击“全部替换”——100个“福利”瞬间变成“优惠”。

    如果想更精准,比如只替换“【福利】”里的“福利”,可以把正则改成【福利】,这样就不会替换“福利券”里的“福利”了——我朋友第一次改的时候没注意,把“福利券”改成“优惠券”,后来用这个方法调整,一下子就准确了。

  • 2分钟清理文本里的乱码:让内容变干净
  • 我帮客户整理PDF导出的文本时,经常遇到“�”“�”这种乱码,手动删要半小时,用RegExp2分钟就搞定:

    步骤1:打开Notepad++,复制乱码文本进去; 步骤2:按“Ctrl+H”打开替换窗口,勾选“正则表达式”; 步骤3:“查找内容”输入(或者更通用的[x00-x1Fx7F-xFF],这个正则能匹配所有非打印字符和乱码); 步骤4:“替换为”留空,点击“全部替换”——所有乱码瞬间消失。

    我上次帮客户清理PDF导出的合同文本,里面有200多个“�”,用这个方法1分钟就清干净了,客户说“比我请的打字员还快”。

    其实RegExp没你想的那么难——我刚开始学的时候也觉得“这符号怎么这么怪”,但花2天时间记基础语法,再练3个实战场景,就能熟练用了。你如果按我说的方法试了,欢迎回来告诉我效果——比如你用正则解决了什么问题?是提取了手机号,还是改了标题?我等着你的好消息!


    正则表达式里的点(.)到底能匹配什么?

    点(.)其实是“任意一个字符”的“暗号”——比如你想找“a开头、b 中间不管是什么字”的词,用a.b就能匹配acb、a1b甚至a@b,特别灵活。但要注意哦,点默认不能匹配换行符,要是你想连换行都一起匹配,得用[sS](s是空白符,S是非空白符,合起来就是所有字符),或者在正则后面加s模式修饰符(比如/./s)。我之前帮朋友找文章里“XX的”结构的词,用.的就把“红色的”“可爱的”都找出来了,特别好用。

    怎么用正则快速提取手机号?

    新手不用记复杂规则,直接用d{11}就行——d代表数字,{11}是正好11位,刚好对应手机号的长度。你打开Excel、Notepad++或者VS Code,找到“查找替换”功能,勾选“正则表达式”选项,输入这个表达式,点“查找全部”,所有手机号就会以列表形式弹出来,直接复制粘贴到新表格就行。我去年帮物业公司整理500条业主信息,手动翻要1小时,用这个方法1分钟就搞定了,连物业阿姨都夸我效率高。

    正则里的星号()和加号(+)有什么区别?

    其实用日常例子一对比就懂:星号()是“0次或多次”,比如“促销”能匹配“促销”(没加任何字,0次补充)、“促销中”(加了1次“中”)、“促销活动”(加了2次“活动”);加号(+)是“至少1次”,所以“促销+”不能匹配单独的“促销”,只能匹配“促销中”“促销活动”这些有补充的词。我之前帮朋友改标题,想保留“促销”本身就用星号,想过滤掉单独的“促销”就用加号,特别好区分。

    乱码怎么用正则快速清理?

    遇到�、�这种乱码,直接用[x00-x1Fx7F-xFF]就行——这个正则能匹配所有非打印字符(比如控制符、乱码)。你打开Notepad++,把乱码文本复制进去,按Ctrl+H打开替换窗口,勾选“正则表达式”,查找内容输这个表达式,替换为留空,点“全部替换”,2分钟就能把所有乱码清干净。我上个月帮客户清理PDF导出的合同文本,200多个乱码瞬间就没了,比手动删快了整整半小时。

    正则里的括号(())有什么用?

    括号其实是“打包工具”——把你想重点处理的内容包起来,方便提取或者替换。比如你想从“2023-10-01”里拆出年、月、日,用(d{4})-(d{2})-(d{2}),就能把2023、10、01分别存到分组里,后续可以用$1、$2、$3调用;要是你想把“【福利】”改成“【优惠】”,用(【福利】)再替换成【优惠】,就能精准定位,不会不小心改到“福利券”里的“福利”。我帮朋友的自媒体改100篇标题,用这个方法5分钟就把所有“【福利】”换成“【优惠】”了,完全没出错。

温馨提示:本站提供的一切软件、教程和内容信息都来自网络收集整理,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,版权争议与本站无关。用户必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解! 联系邮箱:lgg.sinyi@qq.com

给TA打赏
共{{data.count}}人
人已打赏
行业资讯

靠谱免费开源在线教育源码下载网站推荐

2025-9-16 20:59:50

行业资讯

手机超火轻量小游戏 不用联网不占内存 摸鱼打发时间超香

2025-9-16 20:59:59

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索