Java正则表达式教程 – Java正则表达式模式
包 java.util.regex 包含三个类,以支持正则表达式的完整版本。
- 模式
- 匹配
- PatternSyntaxException
Pattern 保存正则表达式的编译形式。
Matcher 将要匹配的字符串与模式相关联,并执行实际匹配。
PatternSyntaxException 表示格式错误的正则表达式中的错误。
编译正则表达式
没有公共构造函数的模式是不可变的,可以共享。
Pattern 类包含一个静态compile()方法,它返回一个 Pattern 对象。
compile()方法是重载的。
static Pattern compile(String regex) static Pattern compile(String regex, int flags)
以下代码将正则表达式编译为Pattern对象:
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
// Prepare a regular expression
String regex = "[a-z]@.";
// Compile the regular expression into a Pattern object
Pattern p = Pattern.compile(regex);
}
}
compile()方法的第二个版本设置修改模式匹配方式的标志。
flags参数是一个位掩码,并在Pattern类中定义为int常量。
| Flag | 描述 |
|---|---|
| Pattern.CANON_EQ | 启用规范等效。 |
| Pattern.CASE_INSENSITIVE | 启用不区分大小写的匹配。 |
| Pattern.COMMENTS | 启用不区分大小写的匹配。… |
| Pattern.DOTALL | 允许在模式中的空格和注释。 忽略以#开头的空格和嵌入的注释,直到行的结尾。 |
| Pattern.LITERAL | 启用模式的文字解析。 这个标志使元字符和转义序列作为正常字符。 |
| Pattern.MULTILINE | 启用多行模式。 默认情况下,^和$匹配输入序列的开始和结束。 此标志使模式仅逐行匹配或输入序列的末尾。 |
| Pattern.UNICODE_CASE | 启用支持Unicode的大小写。 与CASE_INSENSITIVE标志一起,可以根据Unicode标准执行不区分大小写的匹配。 |
| Pattern.UNICODE_ CHARACTER_CLASS | 启用预定义字符类和POSIX字符类的Unicode版本。 设置此标志时,预定义字符类和POSIX字符类符合Unicode技术标准。 |
| Pattern.UNIX_LINES | 启用Unix行模式。 设置此标志时,只有\ n字符被识别为行终止符。 |
例子
以下代码编译设置CASE_INSENSTIVE和DOTALL标志的正则表达式。
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String regex = "[a-z]@.";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
}
}
例2
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String args[]) {
Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
String candidateString = "Java. java JAVA jAVA";
Matcher matcher = p.matcher(candidateString);
// display the latter match
System.out.println(candidateString);
matcher.find(11);
System.out.println(matcher.group());
// display the earlier match
System.out.println(candidateString);
matcher.find(0);
System.out.println(matcher.group());
}
}
上面的代码生成以下结果。


国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码













