标签:的区别 开头 操作 结束 amp 无法 贪婪模式 语言 表达
对于现在的程序,几乎每一个都会用到字符串,虽然许多编程语言都会对String有着很好的支持,但是在遇到一些繁琐的验证,其自带的方法检测会很吃力,所以出现了正则表达式来对字符串进行处理,常用的会有对特殊字符串的匹配将其替换,或者验证某种格式的字符串。
注:此方法在java开发文档中提取,但是在其他的语言中也同样适用。
圆括号一般会在表达式中会将分为组,一对括号为一组,而且在使用的时候可以方便的取出某一组来进行操作。
[]:
方括号[]会匹配其中的某一个字符,相当方括号里面的各个字符为待选择项目,所匹配的字符必须是其中的一项,同时里面也可以是表达式。
其次有些符号在[]可能发生变化,如:^在[]表示取反,而^ 没在[]中的时候就表示字符串的开头。
{}
花括号表示限制长度。如:.{1}表示匹配一个任意字符,{1,3}表示至少一个最多3个。
锚号“^”和“$”
锚号是用来把正则“锚”在字符串的特定位置的。最普通的锚号是“^”和“$”,当“^”用作锚号的时候,表示一行的开始;当“^”用作锚号的时候,表示一行的结束,这样很容易的就可验证字符串的开头或者结束。
ps:还有匹配目标文本的开始和结束采用 \A 和 \Z 或者 \z ;在大多数的语言中,\A 和 ^ 是等价的,\Z 和 \z 的区别在于是否会匹配换行符号 \ Z 可以将换行符号算在里面,而 \z 则不可以。
词界“\b”“\B”
\b 会匹配一个单词的开始或者结束。
\B 会匹配文本中 \b 不会匹配的每一个位置。
连字符“-”
用来划定范围,表示某一范围内的任何字符。比如/[1234567890]/会感觉很不方便。如果表示为/[0-9]/就会显得精简的多。
问号“?”
表示一种异或关系;比如我们在语料库中搜索诗人“李白”或者“李太白”,此时方括号就无法帮助我们,因为[]只能表示xx或者XX,但是不能表示有xx或者没xx。此时可以用“?”来表示前一个字符有或者无。
“|”和&&
“|”表示或者的意思;而&&表示且。
.*:出现在表达式中时为贪婪模式,会将所有的匹配都找到;比如:在HTML中有许多标签<div>part1</div><div>part2</div><div>part3</div><div>part4</div> 使用<div>.*</div>匹配到的是:<div>part1</div><div>part2</div><div>part3</div><div>part4</div>
.*?: 则为非贪婪模式:他只要找到匹配后就不会找下一个了;使用<div>.*?</div>匹配到的是:<div>part1</div>。
(?<=exp) 表示匹配exp之后的,(?=exp)表示匹配exp之前的。
标签:的区别 开头 操作 结束 amp 无法 贪婪模式 语言 表达
原文地址:https://www.cnblogs.com/duheng-biu/p/9785069.html