IntelliJ IDEA
Java
Regular expressions
\s:这个关键字代表 任意的空白符任意的哦,只要看不到的字符都是空白字符的先来看看测试的脚手架代码:Code:package chapter4;import java.util.Arrays;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by MyWorld on 2016/3/23. */public class RegexStudyDemo { public static void main(String[] args) { String regexStr = 'Hello\\s!'; List
java代码就不再介绍了,前面已经解析过了对什么时空白字符,各位tx的判断字符都不同,现在来解决下上面的字符的含义'Hello !':中间是一个全角空格(是不是认为是两个空格了,不是啦)'Hello !' :中间是一个正常的空格,是半角了'Hello\b!':中间的\b是java中预定义好的,表示认为是两个相邻田字格中间的分隔线吧'Hello\t!':这个不用多说,制表符了,就是按键盘上的Tab键就是'Hello\r!':\r是回车'Hello\f!':\f是换页符'Hello\n!':\n是换行符执行下看看结果:Output:Hello ! is not match!Hello! is not match!false
不少眼尖的tx已经发现了,上面的代码执行时,返回false是因为'Hello\\s!'”不能匹配'Hello !'(这个中文全角空格)不能匹配'Hello\b!'(这个例子里,貌似'Hello\b!'和'Hello!'在输出结果上看不出来。说明举的例子,不是很恰当,下面的例子会澄清下)即\s在java中不能匹配中文全角空格和英文空格童话里都是骗人的,不是说好的,可以匹配空白字符的吗。。。
上次没通过的是'Hello\b!',还是'Hello !'(英文空格)更改代码Code:List
执行下看看结果给的两个都不匹配。Output:Hello! is not match!(这个是'Hello\b!',因为list是有序的。\b粘贴过来,显示不出来了)Hello! is not match!false说明java的正则表达式中\s不能匹配 \b和中文全角空格
最后介绍一下正则表达式与关键字\s意义正好相反的关键字\S\S:匹配任意不是空白符的字符\s说了那么多,这个\S就不多说了,直接来代码Code:String regexStr = 'Hello\\S!';List
执行下看看结果Output:true说明:'Hello\\S!'可以匹配'Hello\b!'和'Hello !'(中文全角空格)
'Hello\\S!'是否匹配'Hello!'(o和!什么也没有)呢更改代码:List
小结:java的正则表达式'Hello\\S!'可以匹配'Hello\b!'、'Hello汉!'和'Hello !'(中文全角空格)'Hello\\S!'和'Hello\\s!'都不匹配'Hello!'(o和!什么也没有)