个人心情:刚开始学习编程,这是我第一次发博客,心情还是很忐忑的,以下都是个人理解,可能文章有很多错误,望海涵。
正则表达式 regular expression
是一个强大的字符串处理工具,可以对字符串进行查找,提取,分割,替换等操作
1. 转义符,有切换的意思,字符或字符组合可以分为两面性的和单面性的。
- 两面性的含义为:该字符串有默认的含义,需要用转义符才能切换到另一面
如:n 就是具有两面性,默认含义为"n"字符串,另一面需要用转义符切换成含义为"\n" 换行符;
2.单面性含义为:只有一种含义,不能用 \ 转义符切换,会报错
如:"9"字符串的含义就只是字符串,不能表示为"\9",会编译报错
注意:正则与字符串中,\ 都是代表转义符,但是在两种格式中,某些字符或字符组合的有无两面性不同
如:正则中 ? 默认含义是指前面表达式可以出现0次或1次,转换后 \? 的含义是问号,有两面性;
而在Java字符串中是单面性的,就是问号的意思,不能转义,"\?"会编译报错
2. 程序员编写正则字符串流程
- 先根据现实生活中的格式转换成要在目标字符串中查找的字符串的格式:A\ ------> "A\\"
- 再根据字符串与正则中特殊字符的异同转换成正则:"A\\" ------>A\\ 或 \u0041\\
- 最后根据字符串中的下划线与转义符的转换规则,将正则转换成我们程序员要写的字符串:A\\ ----->"A\\\\" ,\u0041\\ -----> "\\u0041\\\\"
3. 正则运行流程
- 程序员编写字符串形式的正则表达式:"\\?\\[",我们的真实意图是:\?\[
- 正则相关的编译对象或类了解到我们的真实意图 \?\[ ,根据正则中的特殊含义字符规则将真实意图解析成我们要在字符串中查找的 "?[" ,现实生活中就是 ?[