正则表达式教程零基础语法入门与常用符号详解

admin 综合编程开发技术 4


是不是刚接触正则表达式就被那些奇怪的符号吓住了?看着 “^$.*+?()[]” 这些字符,根本不知道啥意思;想写个简单的匹配规则,要么匹配不到内容,要么把无关文字都抓进来;好不容易记住几个符号,换个场景又不知道怎么用了?别着急,今天兔子哥就带零基础的朋友入门正则表达式语法,详解常用符号的含义和用法,哪怕你之前没碰过正则,跟着这篇教程学,也能搞懂这些符号怎么用,一起往下看吧!

一、先搞懂:正则表达式到底是啥?为啥要学符号?


可能有朋友会问,不就是匹配文字吗?为啥要用这么多符号?其实啊,正则表达式就是一套 “文字规则密码”,这些符号是用来描述 “你想找什么样的文字”。比如你想找所有手机号,总不能一个个写出来吧?用符号 “^1 [3-9]\d {9}$” 就能告诉电脑 “找 11 位符合规则的数字”,这就是符号的作用 —— 用简洁的方式描述复杂规则。
很多新手觉得正则难,其实难在一开始没搞懂每个符号的 “脾气”。就像学英语得先认识字母,学正则也得先吃透这些基础符号。只要把常用符号的含义搞清楚,后面写规则就会顺很多。有个零基础的朋友说:“之前看到正则就头疼,后来搞懂每个符号啥意思,突然就开窍了,原来没那么复杂!” 这或许暗示只要方法对,零基础也能学好正则符号。

二、基础符号入门:这 6 个 “核心成员” 必须认识


1. 普通字符:就是你看到的 “字面意思”


像字母、数字、汉字这些 “正常” 的字符,在正则里就代表它们自己。比如正则写 “苹果”,就能匹配文本里的 “苹果”;写 “123”,就能匹配 “123”。这是最简单的符号,不用记特殊规则,看到啥就匹配啥。
不过要注意,空格也是普通字符,如果你想匹配带空格的内容,比如 “hello world”,正则就得写成 “hello world”,中间的空格不能漏,不然匹配不到。

2. 通配符 “.”:匹配任意一个字符(除了换行)


这个点符号可厉害了,它能代表任何一个字符(换行符除外)。比如正则 “a.b”,能匹配 “a1b”“a@b”“a 好 b”—— 只要中间是一个字符就行。但它只能匹配 “一个” 字符,如果你写 “a..b”,就需要中间有两个字符才能匹配,比如 “a12b”“a@#b”。
虽然 “.” 很灵活,但新手容易用过头,比如想匹配 “abc”,写 “a.c” 确实能匹配,但也会匹配 “a1c”“a@c”,如果想精确匹配 “abc”,直接写 “abc” 就行,别用 “.” 画蛇添足。

3. 边界符号 “^” 和 “$”:给匹配 “画范围”


  • “^” 表示 “开头”:比如正则 “^ 春天”,只能匹配以 “春天” 开头的文字,像 “春天来了” 能匹配,“我爱春天” 就不行;
  • ”,只能匹配以 “冬天” 结尾的文字,像 “寒冷的冬天” 能匹配,“冬天快乐” 就不行;
  • 一起用 “^ 你好 $”:就只能匹配 “你好” 这两个字,多一个字少一个字都不行,适合精确验证单个内容。

三、进阶符号详解:控制匹配范围的 “关键按钮”


1. 字符类 “[]”:批量匹配一类字符


如果想匹配 “0-9 任意一个数字”,总不能写 “0|1|2|...|9” 吧?用 “[]” 就能批量指定范围:
  • “[0-9]”:匹配任意一个数字(0 到 9 都行);
  • “[a-z]”:匹配任意一个小写字母;
  • “[A-Z]”:匹配任意一个大写字母;
  • “[0-9a-zA-Z]”:匹配任意数字或字母,注册账号时验证用户名常用这个。

还能在 “[]” 里用 “-” 表示范围,比如 “[3-7]” 匹配 3 到 7 的数字,“[a-f]” 匹配 a 到 f 的小写字母,超方便。

2. 量词 “*+?{}”:控制匹配次数


光知道匹配什么字符还不够,还得告诉电脑 “要匹配几次”,这就是量词的作用:
  • ”:匹配 0 次或多次(可以没有,也可以有很多),比如 “a” 能匹配 “”“a”“aa”“aaa”;
  • “+”:匹配 1 次或多次(至少有 1 次),比如 “a+” 能匹配 “a”“aa” 但不能匹配空;
  • “?”:匹配 0 次或 1 次(可有可无),比如 “a?” 能匹配 “” 或 “a”;
  • “{n}”:正好匹配 n 次,比如 “a {3}” 只能匹配 “aaa”;
  • “{n,}”:至少匹配 n 次,比如 “a {2,}” 能匹配 “aa”“aaa”。

比如手机号是 11 位数字,用 “\d {11}” 就能匹配,这里 “\d” 是数字的简写,后面会讲。

3. 预定义类:偷懒专用的 “简写符号”


正则里有几个现成的简写,代替常用的字符类,记不住长规则可以记这些:
  • “\d”:等同于 “[0-9]”,匹配数字;
  • “\D”:等同于 “[^0-9]”,匹配非数字;
  • “\w”:等同于 “[0-9a-zA-Z_]”,匹配字母、数字、下划线;
  • “\s”:匹配空格、换行等空白字符。

比如想匹配 “3 个数字”,写 “\d {3}” 比 “[0-9]{3}” 简单多了,新手建议优先记这些简写。

四、特殊符号处理:转义符 “\” 的重要作用


有些符号在正则里有特殊含义(比如 “.”“*”“()”),如果想匹配它们本身,就得用 “\” 转义。比如你想匹配文本里的 “www.baidu.com”,直接写 “www.baidu.com” 是不行的,因为 “.” 会被当成通配符。这时候就得转义,写成 “www.baidu.com”,这样 “.” 就变成普通字符了。
不同的工具和编程语言,对转义符的处理可能不一样。比如在 JavaScript 里写正则,有时候需要用两个反斜杠 “\”,而在在线测试工具里可能用一个 “\” 就行。至于为什么会有这种差异,具体机制待进一步研究,新手遇到转义问题,最好先在测试工具里试试,没问题再用。
不过话说回来,转义符虽然有点麻烦,但只要记住 “遇到特殊符号就加 \”,大部分情况都能解决。比如想匹配 “(123)”,正则就得写成 “123”,给 “()” 都加上转义。

五、常用符号速查表:新手必备,随时翻看


符号含义例子匹配效果
.任意字符(除换行)a.b匹配 a1b、a@b、a 好 b
^开头^abc匹配 abc123、abcdef
$结尾abc$匹配 123abc、xyabc
[]字符类[0-9]匹配 0-9 任意数字
*0 次或多次a*匹配、a、aa、aaa
+1 次或多次a+匹配 a、aa、aaa
?0 次或 1 次a?匹配、a
\d数字\d+匹配 123、4567
\w字母数字下划线\w+匹配 abc、123、a1_b

六、自问自答:新手学符号常遇到的问题


问:记不住这么多符号咋办?


答:不用死记硬背!先把 “.”“[]”“*+”“\d” 这几个最常用的记下来,其他的用的时候查表格就行。多写几次规则,用熟了自然就记住了。博主经常用的办法是,把速查表存在手机里,忘了就翻一翻。

问:为啥我写的正则匹配结果和想的不一样?


答:大概率是符号用错了范围。比如想用 “a.b” 匹配 “a1b2b”,结果匹配了整个字符串,这是因为 “.” 是贪婪匹配,改成 “a.*?b”(非贪婪)就能只匹配 “a1b”。多测试,看每次修改符号后结果怎么变,很快能找到问题。

兔子哥的小建议


学正则符号,千万别一开始就追求记住所有符号,重点是理解每个符号的 “作用范围”。比如 “*” 和 “+” 的区别在是否允许 0 次,“^$” 的作用是限定边界,这些核心逻辑搞懂了,符号就没那么难记了。
刚开始可以从简单规则练起,比如先写 “匹配所有数字”(\d+),再写 “匹配 3 位数字”(\d {3}),慢慢增加难度。遇到不懂的符号,就用在线测试工具(比如 regex101)试一下,输入符号看匹配结果,比看书更直观。
其实正则符号就像积木,单个符号很简单,组合起来能搭出复杂规则。只要耐心搞懂每个符号的含义,多练习组合使用,你会发现正则表达式没那么可怕,反而会觉得用符号描述规则很有趣。希望这篇教程能帮你轻松入门,以后看正则符号就像看中文一样轻松!

标签: 正则表达式 hello world

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~