Java 正则表达式学习

——-android培训、java培训、期待与您交流! ———-

字符

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] 边界匹配器

^行的开头$行的结尾\b单词边界\B非单词边界\A输入的开头\G上一个匹配的结尾\Z输入的结尾,仅用于最后的结束符(如果有的话)\z输入的结尾

Greedy 数量词

X?X,一次或一次也没有X*X,零次或多次X+X,一次或多次X{n}X,恰好 nX{n,}X,至少 nX{n,m}X,至少 n 次,但是不超过 m

public class RegexText {public static void main(String[] args) {//test_1();//ipSort();checkMail();}/** * 需求: * 将鞋类字符串转成:我要学编程: *  * 到底用四中功能中的哪一个呢?或者哪几个呢? * 思路方式: * 1、如果只想知道该字符串是对是错,使用匹配。 * 2、想要将已有的字符串变成另一个字符串,替换。 * 3、想要按照自定义的方式将字符串变成多个字符串,切割。获取规则以外的子串 * 4、想要拿到符合需求的字符串子串,获取。 */public static void test_1(){String str = "我我。。。我我。。。我要。。要要..。要要。。。学学学..。。学学。。编编编。.。编编。。程。程程程。。。程。。程。";/** * 将已有的字符串变成另一个字符串。使用替换功能。 * 1、可以先将。去掉。 * 2、再将多个重复的内容变成单个内容。 */str = str.replaceAll("[.。]+", "");System.out.println(str);str = str.replaceAll("(.)\\1+", "$1");System.out.println(str);}public static void ipSort(){String ip = "192.168.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30";ip = ip.replaceAll("(\\d+)", "00$1");System.out.println(ip);ip = ip.replaceAll("0*(\\d{3})", "$1");System.out.println(ip);String[] arr = ip.split(" +");Arrays.sort(arr);for(String s:arr){System.out.println(s.replaceAll("0*(\\d+)", "$1"));}}/** * 对邮件地址进行校验。 */public static void checkMail(){String mail = "abc12@sina.com";//String reg = "\\w+@\\w+(\\.\\w+){1,3}";//相对不太精确的匹配String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//较为精确的匹配System.out.println(mail.matches(reg));}}

无神的瞳孔,我迫切想逃离这周遭被钢筋混凝土堆架的城市,

Java 正则表达式学习

相关文章:

你感兴趣的文章:

标签云: