基本概念
正则表达式是一种用于匹配文本模式的工具。它就像是一种特殊的语言,能够让你在大量的文本中快速找到符合特定模式的字符序列。可以把它想象成一个具有高度精准筛选功能的筛子,用于从文本的“沙堆”中筛选出你想要的“金子”。
字符匹配
普通字符匹配:正则表达式中的普通字符会直接匹配文本中的相同字符。例如,在正则表达式“abc”中,它会在目标文本中寻找连续出现的“a”、“b”和“c”这三个字符。如果文本是“abcdef”,那么这个正则表达式会在开头部分匹配成功。
元字符匹配:元字符是正则表达式中有特殊含义的字符。例如,“.”(点号)是一个元字符,它可以匹配除换行符之外的任何单个字符。如果正则表达式是“a.c”,那么在文本“abc”、“a c”(中间是空格)、“a!c”等情况下都能匹配成功。
字符类
方括号表示法:可以使用方括号“[]”来定义一个字符类,匹配其中的任意一个字符。例如,“[abc]”可以匹配“a”、“b”或者“c”。也可以使用范围表示法,如“[a – z]”匹配所有小写字母,“[0 – 9]”匹配所有数字。
否定字符类:在方括号的开头添加“^”符号可以创建否定字符类。例如,“[^abc]”会匹配除“a”、“b”和“c”之外的任何字符。
量词
基本量词:量词用于指定匹配的次数。“”表示匹配前面的字符零次或多次。例如,“a”可以匹配空字符串、“a”、“aa”、“aaa”等。“+”表示匹配前面的字符一次或多次,如“a+”可以匹配“a”、“aa”、“aaa”等,但不能匹配空字符串。“?”表示匹配前面的字符零次或一次,例如“a?”可以匹配空字符串或者“a”。
指定范围量词:可以使用“{n}”来指定前面字符的匹配次数为n次。如“a{3}”只会匹配“aaa”。“{n, m}”表示匹配前面的字符次数在n到m之间,例如“a{1,3}”可以匹配“a”、“aa”或者“aaa”。
分组与捕获
括号分组:可以使用括号“()”对正则表达式的部分进行分组。例如,在表达式“(ab)+”中,“ab”被视为一个组,整个表达式表示“ab”这个组合出现一次或多次。分组还用于捕获子表达式匹配的内容,以便后续使用。
反向引用:通过捕获组,可以进行反向引用。例如,在正则表达式“(\d)\1”中,“(\d)”捕获一个数字,“\1”是对第一个捕获组的反向引用,这个表达式表示匹配连续出现两次相同的数字。
边界匹配符
开始和结束边界:“^”在正则表达式的开头使用时,表示匹配文本的开始部分。例如,“^abc”只会匹配以“abc”开头的文本。“$”在正则表达式的结尾使用时,表示匹配文本的结束部分。如“abc$”只会匹配以“abc”结尾的文本。
单词边界:“\b”用于匹配单词边界。例如,在表达式“\bcat\b”中,它会匹配独立的单词“cat”,而不会匹配“category”中的“cat”部分。
特殊转义字符
有些字符在正则表达式中有特殊含义,但如果要匹配这些字符本身,需要进行转义。例如,要匹配“\”字符,需要使用“\”。如果要匹配“$”字符,需要使用“$”。通常,在正则表达式中,“\”是用于转义的字符。