正则表达式半小时入门(正则表达式好难懂,求高人指点,怎么学有什么好的理解方法没有看到那一串符号,晕了)

:暂无数据 2026-04-15 08:20:02 0
正则表达式半小时入门正则表达式好难懂,求高人指点,怎么学有什么好的理解方法没有看到那一串符号,晕了,看似独立,实则血脉相连。它们是如何相互影响的?本文将为你层层剖析。

本文目录

正则表达式好难懂,求高人指点,怎么学有什么好的理解方法没有看到那一串符号,晕了

1、入门简介
简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi器,Perl或PHP脚本语言,以及awk或sed shell程序等。此外,象JavaScript这种客户端的脚本语言也提供了对正则表达式的支持。由此可见,正则表达式已经超出了某种语言或某个系统的局限,成为人们广为接受的概念和功能。
正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。
  举例来说,正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确。如果通过正则表达式验证用户邮件地址的格式正确,用户所填写的表单信息将会被正常处理;反之,如果用户输入的邮件地址与正则表达的模式不匹配,将会弹出提示信息,要求用户重新输入正确的邮件地址。由此可见正则表达式在WEB应用的逻辑判断中具有举足轻重的作用。
2、基本语法
在对正则表达式的功能和作用有了初步的了解之后,我们就来具体看一下正则表达式的语法格式。
正则表达式的形式一般如下:
/love/
其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入“/”定界符之间即可。为了能够使用户更加灵活的定制模式内容,正则表达式提供了专门的“元字符”。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
较为常用的元字符包括: “+”, “*”,以及 “?”。其中,“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次,“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次,而“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。
下面,就让我们来看一下正则表达式元字符的具体应用。
/fo+/
因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现一个或多个字母o的字符串相匹配。
/eg*/
因为上述正则表达式中包含“*”元字符,表示可以与目标对象中的 “easy”, “ego”, 或者 “egg”等在字母e后面连续出现零个或多个字母g的字符串相匹配。
/Wil?/
因为上述正则表达式中包含“?”元字符,表示可以与目标对象中的 “Win”, 或者 “Wilson”,等在字母i后面连续出现零个或一个字母l的字符串相匹配。
除了元字符之外,用户还可以精确指定模式在匹配对象中出现的频率。例如,
/jim{2,6}/
上述正则表达式规定字符m可以在匹配对象中连续出现2-6次,因此,上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。
在对如何使用正则表达式有了初步了解之后,我们来看一下其它几个重要的元字符的使用方式。
\s:用于匹配单个空格符,包括tab键和换行符;
\S:用于匹配除单个空格符之外的所有字符;
\d:用于匹配从0到9的数字;
\w:用于匹配字母,数字或下划线字符;
\W:用于匹配所有与\w不匹配的字符;
. :用于匹配除换行符之外的所有字符。
(说明:我们可以把\s和\S以及\w和\W看作互为逆运算)
下面,我们就通过实例看一下如何在正则表达式中使用上述元字符。
/\s+/
上述正则表达式可以用于匹配目标对象中的一个或多个空格字符。
/\d000/
如果我们手中有一份复杂的财务报表,那么我们可以通过上述正则表达式轻而易举的查找到所有总额达千元的款项。
除了我们以上所介绍的元字符之外,正则表达式中还具有另外一种较为独特的专用字符,即定位符。定位符用于规定匹配模式在目标对象中的出现位置。
较为常用的定位符包括: “^”, “$”, “\b” 以及 “\B”。其中,“^”定位符规定匹配模式必须出现在目标字符串的开头,“$”定位符规定匹配模式必须出现在目标对象的结尾,\b定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一,而“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾。同样,我们也可以把“^”和“$”以及“\b”和“\B”看作是互为逆运算的两组定位符。举例来说:
/^hell/
因为上述正则表达式中包含“^”定位符,所以可以与目标对象中以 “hell”, “hello”或 “hellhound”开头的字符串相匹配。
/ar$/
因为上述正则表达式中包含“$”定位符,所以可以与目标对象中以 “car”, “bar”或 “ar” 结尾的字符串相匹配。
/\bbom/
因为上述正则表达式模式以“\b”定位符开头,所以可以与目标对象中以 “bomb”, 或 “bom”开头的字符串相匹配。
/man\b/
因为上述正则表达式模式以“\b”定位符结尾,所以可以与目标对象中以 “human”, “woman”或 “man”结尾的字符串相匹配。
为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。例如:
//
上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。
//
上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。
//
上述正则表达式将会与从0到9范围内任何一个数字相匹配。
/()+/
上述正则表达式将会与任何由字母和数字组成的字符串,如 “aB0” 等相匹配。这里需要提醒用户注意的一点就是可以在正则表达式中使用 “()” 把字符串组合在一起。“()”符号包含的内容必须同时出现在目标对象中。因此,上述正则表达式将无法与诸如 “abc”等的字符串匹配,因为“abc”中的最后一个字符为字母而非数字。
如果我们希望在正则表达式中实现类似编程逻辑中的“或”运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符 “|”。例如:
/to|too|2/
上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。
正则表达式中还有一个较为常用的运算符,即否定符 “”规定目标对象中不能存在模式中所规定的字符串。例如:
//
上述字符串将会与目标对象中除A,B,和C之外的任何字符相匹配。一般来说,当“^”出现在 “”时,则应当被视做定位符。
最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符“\”。例如:
/Th\*/
上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配。
3、使用实例
①PHP中可以使用ereg()函数进行模式匹配操作。ereg()函数的使用格式如下:
 
以下为引用的内容:
  ereg(pattern, string)
  其中,pattern代表正则表达式的模式,而string则是执行查找替换操作的目标对象。同样是验证邮件地址,使用PHP编写的程序代码如下:
《 ?php
   if (ereg(“^()+”,$email)){
echo “Your email address is correct!”;}
   else{
echo “Please try again!”;
}
?》

怎么入门正则表达式

看书,练习。
推荐一个工具,EditPadPro有免费版,到官网上去下,英文的。对正则表达式的支持非常不错。
UltraEdit的也可以。

正则表达式怎么学啊

众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。 大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
自从jdk1.4推出java.util.regex包,就为我们提供了很好的J**A正则表达式应用平台。
因为正则表达式是一个很庞杂的体系,所以我仅例举些入门的概念,更多的请参阅相关书籍及自行摸索。
\\ 反斜杠 \t 间隔 (’\u0009’) \n 换行 (’\u000A’) \r 回车 (’\u000D’) \d 数字 等价于 \f 换页符 \e Escape \b 一个单词的边界 \B 一个非单词的边界 \G 前一个匹配的结束
^为限制开头 ^java
条件限制为以Java为开头字符 $为限制结尾 java$
条件限制为以java为结尾字符 . 条件限制除\n以外任意一个单独字符 java..
条件限制为java后除换行外任意两个字符
加入特定限制条件「
条件限制在小写a to z范围中一个字符
条件限制在大写A to Z范围中一个字符
条件限制在小写0 to 9范围中一个字符 条件限制在小写0 to 9或a to z范围中一个字符(交集)
条件限制在非小写a to z范围中一个字符
条件限制在非大写A to Z范围中一个字符
条件限制在非小写0 to 9范围中一个字符 条件限制在非小写0 to 9或a to z范围中一个字符(交集)
在限制条件为特定字符出现0次以上时,可以使用「*」 J*
0个以上J .*
0个以上任意字符 J.*D
J与D之间0个以上任意字符
在限制条件为特定字符出现1次以上时,可以使用「+」 J+
1个以上J .+
1个以上任意字符 J.+D
J与D之间1个以上任意字符
在限制条件为特定字符出现有0或1次以上时,可以使用「?」 JA?
J或者JA出现
限制为连续出现指定次数字符「{a}」 J{2}
JJ J{3}
JJJ 文字a个以上,并且「{a,}」 J{3,}
JJJ,JJJJ,JJJJJ,???(3次以上J并存) 文字个以上,b个以下「{a,b}」 J{3,5}
JJJ或JJJJ或JJJJJ 两者取一「|」 J|A
J或A Java|Hello
Java或Hello
「()」中规定一个组合类型 比如,我查询《a href=\"index.html\"》index《/a》中《a href》《/a》间的数据,可写作《a.*href=\".*\"》(.+?)《/a》
在使用Pattern.compile函数时,可以加入控制正则表达式的匹配行为的参数: Pattern Pattern.compile(String regex, int flag)
flag的取值范围如下: Pattern.CANON_EQ
当且仅当两个字符的"正规分解(canonical decomposition)"都完全相同的情况下,才认定匹配。比如用了这个标志之后,表达式"a\u030A"会匹配"?"。默认情况下,不考虑"规范相等性(canonical equivalence)"。 Pattern.CASE_INSENSITIVE(?i)
默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。这个标志能让表达式忽略大小写进行匹配。要想对Unicode字符进行大小不明感的匹配,只要将UNICODE_CASE与这个标志合起来就行了。 Pattern.COMMENTS(?x)
在这种模式下,匹配时会忽略(正则表达式里的)空格字符(译者注:不是指表达式里的"\\s",而是指表达式里的空格,tab,回车之类)。注释从#开始,一直到这行结束。可以通过嵌入式的标志来启用Unix行模式。 Pattern.DOTALL(?s)
在这种模式下,表达式’.’可以匹配任意字符,包括表示一行的结束符。默认情况下,表达式’.’不匹配行的结束符。 Pattern.MULTILINE (?m)
在这种模式下,’^’和’$’分别匹配一行的开始和结束。此外,’^’仍然匹配字符串的开始,’$’也匹配字符串的结束。默认情况下,这两个表达式仅仅匹配字符串的开始和结束。 Pattern.UNICODE_CASE (?u)
在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。默认情况下,大小写不敏感的匹配只适用于US-ASCII字符集。 Pattern.UNIX_LINES(?d)
在这个模式下,只有’\n’才被认作一行的中止,并且与’.’,’^’,以及’$’进行匹配。
Java正则的功用还有很多,事实上只要是字符处理,就没有正则做不到的事情存在。(当然,正则解释时较耗时间就是了|||……)

如何入门Python的正则表达式

2. re模块 2.1. 开始使用re Python通过re模块提供对正则表达式的支持。使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,

纸上得来终觉浅,绝知此事要躬行。正则表达式半小时入门正则表达式好难懂,求高人指点,怎么学有什么好的理解方法没有看到那一串符号,晕了的理论已备好,期待你的实践成果。
本文编辑:admin

更多文章:


数据库损坏了还能修复吗(修复损坏的Foxpro数据库)

数据库损坏了还能修复吗(修复损坏的Foxpro数据库)

关于数据库损坏了还能修复吗,您需要知道的几个关键点,尤其是修复损坏的Foxpro数据库的深入解析,我们都将在这篇文章中涵盖。

2026年4月15日 09:40

随机抽签网站(求一个随机抽签不重复软件或****程序)

随机抽签网站(求一个随机抽签不重复软件或****程序)

下面,我们将通过随机抽签网站的概述、求一个随机抽签不重复软件或****程序的详解以及总结展望三个部分,为您系统梳理这一主题。

2026年4月15日 09:20

ascii怎么读写(MATLAB读ASCII文件怎么读)

ascii怎么读写(MATLAB读ASCII文件怎么读)

上一篇文章我们介绍了ascii怎么读写的基础,今天我们将深入其核心环节——MATLAB读ASCII文件怎么读,看看它如何承前启后。

2026年4月15日 09:00

mysql查看数据库代码(怎么查看ubuntu mysql数据库)

mysql查看数据库代码(怎么查看ubuntu mysql数据库)

很多新手在接触mysql查看数据库代码时,都会在怎么查看ubuntu mysql数据库这个问题上徘徊良久。本文将亮起指路明灯,带你快速通关。

2026年4月15日 08:40

正则表达式半小时入门(正则表达式好难懂,求高人指点,怎么学有什么好的理解方法没有看到那一串符号,晕了)

正则表达式半小时入门(正则表达式好难懂,求高人指点,怎么学有什么好的理解方法没有看到那一串符号,晕了)

正则表达式半小时入门和正则表达式好难懂,求高人指点,怎么学有什么好的理解方法没有看到那一串符号,晕了,看似独立,实则血脉相连。它们是如何相互影响的?本文将为你层层剖析。

2026年4月15日 08:20

汇编指令集详细解释(汇编几条指令 帮忙解释下)

汇编指令集详细解释(汇编几条指令 帮忙解释下)

想高效掌握汇编指令集详细解释的核心吗?本文将为你聚焦汇编几条指令 帮忙解释下这一关键环节,帮你节省大量摸索时间。

2026年4月15日 08:00

数组公式求个数(excel如何统计数据个数)

数组公式求个数(excel如何统计数据个数)

今天这份关于数组公式求个数的指南,将用80%的篇幅讲透excel如何统计数据个数这个决定成败的细节,绝对让你不虚此行。

2026年4月15日 07:40

under the moon(Under Moon 什么意思)

under the moon(Under Moon 什么意思)

承接之前对under the moon的讨论,本篇我们将视角下沉,专门来聊聊实操中无法回避的Under Moon🐾 什么意思问题,让知识落地。

2026年4月15日 07:20

管理系统页面(实验室设备管理系统 页面设计 后台基于nodejs 数据库mysql)

管理系统页面(实验室设备管理系统 页面设计 后台基于nodejs 数据库mysql)

从我第一次听说管理系统页面到真正弄懂实验室设备管理系统 页面设计 后台基于nodejs 数据库mysql,也走过一些弯路。下面就把我的学习心得分享给大家,希望能让您的入门之路更顺畅。

2026年4月15日 07:00

unity3d大屏(unity3d 关于屏幕大小,江湖救急~~)

unity3d大屏(unity3d 关于屏幕大小,江湖救急~~)

我们整理了关于unity3d大屏最高频的提问,发现unity3d 关于屏幕大小,江湖救急~~位列榜首。于是,就有了这篇集中解答的精华帖。

2026年4月15日 06:40

最近更新

under the moon(Under Moon 什么意思)
2026-04-15 07:20:02 浏览:0
热门文章

annesullivan的读音(”Anne”怎么读)
2026-04-08 22:00:02 浏览:0
android详细教程(Android Camera2 教程 · 第一章 · 概览)
2026-04-09 00:40:01 浏览:0
标签列表