元字符(Metacjaracter)-转义号\\
\\符号 说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错。
特殊:在Java的正则表达式中,两个\\代表其他语言中的一个\
需要用到转义符号的字符有.、*、+、(、)、&、/、\、?、[、]、^、{、}案例:
在匹配某个字符串的时候是选择性的。即:既可以匹配这个,又可以匹配那个,这时需要用到选择匹配符号|符号符号含义示例解释``匹配``之前或之后的表达式案例:
用于指定其前面的字符和组合项连续出现多少次符号符号含义示例解释结果*指定符号重复0次或n次(无要求)(abc)*仅包含任意abc的字符串abc、abcabc+指定字符重复1次或n次(至少一次)m+(abc)*以至少1个m开头,后接任意个abc的字符串m、mabc、mabcabc、mmabc?指定字符重复0次或1次(最多1次)m+abc?以至少1个m开头,后接ab或abc的字符串,?接最近的mab、mabc、mmab{n}只能输入n个字符[abc]以abc中字母组成的任意长度为3的字符串abc、dbc、adc{n,}指定至少n个匹配[abcd]由abcd中字母组成的任意长度不小于3的字符串abc、ddddd{n,m}指定至少n个但不多于m个匹配[abcd]由abcd中字母组成的任意长度不小于3,并且不大于5的字符串abc、abcd、aaaaa案例:
规定要匹配的字符串出现的位置,比如在字符串的开始还是在结束的位置符号符号含义示例解释结果^指定起始字符^[0-9]+[a-z]*以至少1个数字开头,后接任意个小写字母的字符串2、56f`符号符号含义示例解释--------------------------------------------------------------------------------------------------------------------------------------^指定起始字符^[0-9]+[a-z]*以至少1个数字开头,后接任意个小写字母的字符串2、56f| 指定结束字符 | ^[0-9]\\-[a-z]+$以1个数字开头后接连字符-,并以至少1个小写字母结尾的字符串1-a、2-dd\\b匹配目标字符串的边界qy\\b这里的边界是指离空格最近的和离结束位置最近的qydsjdqy qyfffqy\\B匹配目标字符串的非边界qy\\b与\\b相反,指开头第一次出现qydsjdqy qyfffqy案例:
java.util.regex包主要包括以下三个类Pattern类、Matcher类和PatternSyntaxException1.Pattern类
pattern对象是一个正则表达式对象。Pattern 类没有公共构造方法。要创建一个 Pattern对象,调用其公共静态方法,它返回一个 Pattern对象。该方法接受一个正则表达式作为它的第一个参数,比如atternr=Pattern.compile(pattern);
Matcher对象是对输入字符串进行解释和匹配的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用 Pattern对象的matcher 方法来获得一个Matcher对象
PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。三、分组、捕获、反向引用
我们可以用圆括号组成一个比较复杂的匹配模式,那么一个圆括号的部分我们可以看作是一个子表达式/一个分组。2.捕获
把正则表达式中子表达式/分组匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。组0代表的是整个正则式3.反向引用
圆括号的内容被捕获后,可以在这个括号后被使用,从而写出一个比较实用的匹配模式,这个我们称为反向引用,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部,内部反向引用\\分组号,外部反向引用$分组号
个人理解反向引用就是通过分组的组名去再次利用分组四、正则表达式应用
说明:4.分割字符串
为什么一个$1就可以替换不同的字符呢,为什么不只是替换第一个字符,可能你有这样的疑问,
解释:这还要看源码,通过源码我们可以得知分组的位置不是递增的而是一次一次被替换的,因此他始终会在1分组,开始我在1分组中,然后用我替换了全部连续的我,之后要替换我进入第一个分组,重复上述操作等等
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |