JAVA学习笔记-正则表达式

关于正则表达式理解


正则表达式用来判断是否符合规定的规则
例如判断字符串是否都由数字构成(例如密码是否由数字构成,有几位,)

String str = "12345"



       split(String regex)
       String str = "q"
       String regex = "[q]"
      则其判为str.matches(regex)为true 若str中为"qw"则为false;str只能为q

     若构造为[a-zA-Z]则a到z及A到Z中任意一个字母都true    


     
      判断多个字母(意思出现n次)
      构造 regex = "[a-zA-Z]{n}?" //将n换为n,m 则出现次数在n到m范围内
      数字判断与字母类似 详查api

      


      注意: 在正则表达式中 '.'可以匹配任何字符  若字符串中有.要分割时 有.需要转义


      
      例判断ip地址:
       String ip = "192.168.1.2";
String[] strs=ip.split("\\.");
for(String s:strs)
{
System.out.println(s);
}
其运行结果为
192
168
1

1


正则表达式中 \\ 为反斜线字符
所以需要'.'转义需表达为"\\."   

若要判断ip地址是否符合格式 修改regex如下 
String regex  = "([0-9]{1.3}\\.){3}[0-9]{1,3}"

判断ip地址.分后的值在0-255之间
如上用strs数组接收后
利用 Integer.parseInt(s)取出的值来判断是否在0-255之间

可用来判断学号等类似数据信息




 

字符
x 字符 x
\\ 反斜线字符
\0n 带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x 的字符 hh
\uhhhh 带有十六进制值 0x 的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
 
字符类
[abc] abc(简单类)
[^abc] 任何字符,除了 abc(否定)
[a-zA-Z] azAZ,两头的字母包括在内(范围)
[a-d[m-p]] admp[a-dm-p](并集)
[a-z&&[def]] def(交集)
[a-z&&[^bc]] az,除了 bc[ad-z](减去)
[a-z&&[^m-p]] az,而非 mp[a-lq-z](减去)
 
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
 
POSIX 字符类(仅 US-ASCII)
\p{Lower} 小写字母字符:[a-z]
\p{Upper} 大写字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十进制数字:[0-9]
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

你可能感兴趣的:(java,java,正则表达式)