# Java 正则表达式元字符 ## Java正则表达式教程 - Java正则表达式元字符 元字符是在Java正则表达式中具有特殊含义的字符。 Java中的正则表达式支持的元字符如下: \`\`\` ( ) \[ \] { } \\ \^ $ \| ? \* + . \< \> - = ! \`\`\` ## 字符类 元字符\` \[\`和\`\] \`指定正则表达式中的字符类。 字符类是一组字符。正则表达式引擎将尝试匹配集合中的一个字符。 字符类"\[ABC\]"将匹配字符A,B或C.例如,字符串"woman"或"women"将匹配正则表达式"wom \[ae\] n"。 我们可以使用字符类指定一个字符范围。 范围使用连字符\` - \`字符表示。 例如,\` \[A-Z\] \`表示任何大写英文字母;"\[0-9\]"表示0和9之间的任何数字。 \`\^ \`表示不是。 例如,\` \[\^ ABC\] \`表示除A,B和C以外的任何字符。 字符类\` \[\^ A-Z\] \`表示除大写字母之外的任何字符。 如果\` \^ \`出现在字符类中,除了开头,它只匹配一个\` \^ \`字符。 例如,"\[ABC \^\]"将匹配A,B,C或\^。 您还可以在一个字符类中包含两个或多个范围。例如,\` \[a-zA-Z\] \`匹配任何字符a到z和A到Z. \`\[a-zA-Z0-9\] \`匹配任何字符a到z(大写和小写)和任何数字0到9。 下表列出了字符类的示例 字符a到z \| 字符类 \| 含义 \| \| :-------------- \| :----------------------------------------- \| \| \[abc\] \| 字符a,b或c \| \| \[\^xyz\] \| 除x,y和z以外的字符 \| \| \[a-z\] \| \| \| \[a-cx-z\] \| 字符a到c或x到z,其将包括a,b,c,x,y或z。 \| \| \[0-9\&\&\[4-8\]\] \| 两个范围(4,5,6,7或8)的交叉, \| \| \[a-z\&\&\[\^aeiou\]\] \| 所有小写字母减元音 \| \| \| \| \| \| \| ## 预定义字符类 下表列出了一些常用的预定义字符类。 预定义 字符 类 \| \| 含义 \| \| :--- \| :----------------------------------------------------------- \| \| . \| 任何字符 \| \| \\d \| 数字。 与\[0-9\]相同 \| \| \\D \| 非数字。 与\[\^ 0-9\]相同 \| \| \\s \| 空格字符。 包括与\[\\\\ t \\\\ n \\\\ x0B \\\\ f \\\\ r\]相同。空格标签换行符垂直标签表单Feed回车字符 \| \| \\S \| 非空白字符。 与\[\^ \\\\ s\]相同 \| \| \\w \| 一个字符。 与\[a-zA-Z_0-9\]相同。 \| \| \\W \| 非字字符。 与\[\^ \\ w\]相同。 \| ## 例子 以下代码使用\` \\d \`匹配所有数字。 \`\\\\d \`在字符串中用于转义\` \\ \`。 \`\`\` import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String args\[\]) { Pattern p = Pattern.compile("Java \\\\d"); String candidate = "Java 4"; Matcher m = p.matcher(candidate); if (m != null) System.out.println(m.find()); } } \`\`\` 上面的代码生成以下结果。 !\[img\](https://atts.w3cschool.cn/attachments/jimg/java_regular_expression/EXAMPLE__E79CB79318B529DD69B9.png) ## 例2 以下代码\` \\w+ \`匹配任何单词。 双斜杠用于转义\` \\ \`。 \`\`\` import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String args\[\]) { String regex = "\\\\w+"; Pattern pattern = Pattern.compile(regex); String candidate = "asdf Java2s.com"; Matcher matcher = pattern.matcher(candidate); if (matcher.find()) { System.out.println("GROUP 0:" + matcher.group(0)); } } } \`\`\` 上面的代码生成以下结果。 !\[img\](https://atts.w3cschool.cn/attachments/jimg/java_regular_expression/EXAMPLE_2__5CCE3422B02228C24DE5.png)