正则表达式
来源:互联网 发布:吉林大学ei数据库 编辑:程序博客网 时间:2024/05/02 16:14
java.util.regex
类 Pattern
java.lang.Object java.util.regex.Pattern
- 所有已实现的接口:
- Serializable
public final class Pattern
- extends Object
- implements Serializable
正则表达式的编译表示形式。
指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher
对象,依照正则表达式,该对象可以与任意字符序列
匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
因此,典型的调用顺序是
Pattern p = Pattern.compile
("a*b"); Matcher m = p.matcher
("aaaaab"); boolean b = m.matches
();
在仅使用一次正则表达式时,可以方便地通过此类定义 matches
方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句
等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。boolean b = Pattern.matches("a*b", "aaaaab");
此类的实例是不可变的,可供多个并发线程安全使用。Matcher
类的实例用于此目的则不安全。
正则表达式的构造摘要
的非捕获组static Pattern
compile(String regex)
将给定的正则表达式编译到模式中。
static Pattern
compile(String regex, int flags)
将给定的正则表达式编译到具有给定标志的模式中。
int
flags()
返回此模式的匹配标志。
Matcher
matcher(CharSequence input)
创建匹配给定输入与此模式的匹配器。
static boolean
matches(String regex,CharSequence input)
编译给定正则表达式并尝试将给定输入与其匹配。
String
pattern()
返回在其中编译过此模式的正则表达式。
static String
quote(String s)
返回指定
String
的字面值模式 String
。 String[]
split(CharSequence input)
围绕此模式的匹配拆分给定输入序列。
String[]
split(CharSequence input, int limit)
围绕此模式的匹配拆分给定输入序列。
String
toString()
返回此模式的字符串表示形式。
clone, equals,finalize, getClass,hashCode, notify, notifyAll, wait, wait,wait
UNIX_LINES
public static final int UNIX_LINES
- 启用 Unix 行模式。
在此模式中,.、^ 和 $ 的行为中仅识别 '\n' 行结束符。
通过嵌入式标志表达式 (?d) 也可以启用 Unix 行模式。
- 另请参见:
- 常量字段值
CASE_INSENSITIVE
public static final int CASE_INSENSITIVE
- 启用不区分大小写的匹配。
默认情况下,不区分大小写的匹配假定仅匹配 US-ASCII 字符集中的字符。可以通过指定
UNICODE_CASE
标志连同此标志来启用 Unicode 感知的、不区分大小写的匹配。通过嵌入式标志表达式 (?i) 也可以启用不区分大小写的匹配。
指定此标志可能对性能产生一些影响。
- 另请参见:
- 常量字段值
COMMENTS
public static final int COMMENTS
- 模式中允许空白和注释。
此模式将忽略空白和在结束行之前以 # 开头的嵌入式注释。
通过嵌入式标志表达式 (?x) 也可以启用注释模式。
- 另请参见:
- 常量字段值
MULTILINE
public static final int MULTILINE
- 启用多行模式。
在多行模式中,表达式 ^ 和 $ 仅分别在行结束符前后匹配,或者在输入序列的结尾处匹配。默认情况下,这些表达式仅在整个输入序列的开头和结尾处匹配。
通过嵌入式标志表达式 (?m) 也可以启用多行模式。
- 另请参见:
- 常量字段值
LITERAL
public static final int LITERAL
- 启用模式的字面值解析。
指定此标志后,指定模式的输入字符串就会作为字面值字符序列来对待。输入序列中的元字符或转义序列不具有任何特殊意义。
标志 CASE_INSENSITIVE 和 UNICODE_CASE 在与此标志一起使用时将对匹配产生影响。其他标志都变得多余了。
不存在可以启用字面值解析的嵌入式标志字符。
- 从以下版本开始:
- 1.5
- 另请参见:
- 常量字段值
DOTALL
public static final int DOTALL
- 启用 dotall 模式。
在 dotall 模式中,表达式 . 可以匹配任何字符,包括行结束符。默认情况下,此表达式不匹配行结束符。
通过嵌入式标志表达式 (?s) 也可以启用 dotall 模式(s 是 "single-line" 模式的助记符,在 Perl 中也使用它)。
- 另请参见:
- 常量字段值
UNICODE_CASE
public static final int UNICODE_CASE
- 启用 Unicode 感知的大小写折叠。
指定此标志后,由
CASE_INSENSITIVE
标志启用时,不区分大小写的匹配将以符合 Unicode Standard 的方式完成。默认情况下,不区分大小写的匹配假定仅匹配 US-ASCII 字符集中的字符。通过嵌入式标志表达式 (?u) 也可以启用 Unicode 感知的大小写折叠。
指定此标志可能对性能产生影响。
- 另请参见:
- 常量字段值
CANON_EQ
public static final int CANON_EQ
- 启用规范等价。
指定此标志后,当且仅当其完整规范分解匹配时,两个字符才可视为匹配。例如,当指定此标志时,表达式 "a\u030A" 将与字符串 "\u00E5" 匹配。默认情况下,匹配不考虑采用规范等价。
不存在可以启用规范等价的嵌入式标志字符。
指定此标志可能对性能产生影响。
- 另请参见:
- 常量字段值
compile
public static Pattern compile(String regex)
- 将给定的正则表达式编译到模式中。
- 参数:
regex
- 要编译的表达式- 抛出:
PatternSyntaxException
- 如果表达式的语法无效
compile
public static Pattern compile(String regex, int flags)
- 将给定的正则表达式编译到具有给定标志的模式中。
- 参数:
regex
- 要编译的表达式flags
- 匹配标志,可能包括CASE_INSENSITIVE
、MULTILINE
、DOTALL
、UNICODE_CASE
、CANON_EQ
、UNIX_LINES
、LITERAL
和COMMENTS
的位掩码- 抛出:
IllegalArgumentException
- 如果在flags 中设置与定义的匹配标志不对应的位值PatternSyntaxException
- 如果表达式的语法无效
pattern
public String pattern()
- 返回在其中编译过此模式的正则表达式。
- 返回:
- 模式的源代码
toString
public String toString()
返回此模式的字符串表示形式。此为在其中编译过此模式的正则表达式。
- 覆盖:
- 类
Object
中的toString
- 返回:
- 模式的字符串表示形式
- 从以下版本开始:
- 1.5
matcher
public Matcher matcher(CharSequence input)
- 创建匹配给定输入与此模式的匹配器。
- 参数:
input
- 要匹配的字符序列- 返回:
- 此模式的新匹配器
flags
public int flags()
- 返回此模式的匹配标志。
- 返回:
- 编译此模式时指定的匹配标志
matches
public static boolean matches(String regex, CharSequence input)
- 编译给定正则表达式并尝试将给定输入与其匹配。
调用此便捷方法的形式
与表达式Pattern.matches(regex, input);
的行为完全相同。Pattern.compile(regex).matcher(input).matches()
如果要多次使用一种模式,编译一次后重用此模式比每次都调用此方法效率更高。
- 参数:
regex
- 要编译的表达式input
- 要匹配的字符序列- 抛出:
PatternSyntaxException
- 如果表达式的语法无效
split
public String[] split(CharSequence input, int limit)
- 围绕此模式的匹配拆分给定输入序列。
此方法返回的数组包含输入序列的子字符串,由匹配此模式的另一子序列或输入序列的结尾终止。数组中子字符串的顺序与其在输入中出现的顺序相同。如果此模式与输入的任何子序列都不匹配,那么得到的数组仅包含一个元素,即字符串形式的输入序列。
limit 参数控制应用模式的次数,从而影响结果数组的长度。如果限制 n 大于零,那么模式至多应用 n> - 1 次,数组的长度不大于n,并且数组的最后条目将包含除最后的匹配定界符之外的所有输入。如果 n 非正,那么将应用模式的次数不受限制,并且数组可以为任意长度。如果n 为零,那么应用模式的次数不受限制,数组可以为任意长度,并且将丢弃尾部空字符串。
例如,输入 "boo:and:foo" 将产生以下结果及参数:
Regex
Limit
:2{ "boo", "and:foo" }:5{ "boo", "and", "foo" }:-2{ "boo", "and", "foo" }o5{ "b", "", ":and:f", "", "" }o-2{ "b", "", ":and:f", "", "" }o0{ "b", "", ":and:f" }Result
- 参数:
input
- 要拆分的字符序列limit
- 结果阈值,如上文中所述- 返回:
- 根据围绕此模式的匹配来拆分输入后所计算的字符串数组
split
public String[] split(CharSequence input)
- 围绕此模式的匹配拆分给定输入序列。
此方法的工作方式类似于使用给定的输入序列和限制参数零调用两参数 (java.lang.CharSequence, int) split} 方法。因此,得到的数组中不包括尾部空字符串。
例如,输入 "boo:and:foo" 将产生以下结果及表达式:
Regex
:{ "boo", "and", "foo" }o{ "b", "", ":and:f" }Result
- 参数:
input
- 要拆分的字符序列- 返回:
- 根据围绕此模式的匹配来拆分输入后所计算的字符串数组
quote
public static String quote(String s)
- 返回指定
String
的字面值模式String
。此方法产生一个
输入序列中的元字符和转义序列不具有任何特殊意义。String
,可以将其用于创建与字符串s
匹配的Pattern
,就好像它是字面值模式一样。 - 参数:
s
- 要字面值化的字符串- 返回:
- 字面值字符串替换
- 从以下版本开始:
- 1.5
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- SAP R/3 初始屏幕“START_IMAGE”图像修改
- 竞品与需求
- COM本质论——COM是一个好的C++
- Ubuntu出错笔记_dpkg
- VC++多线程编程
- 正则表达式
- B/S和C/S
- 图片分屏加载的插件
- android 图片 圆角
- 获取浏览器高度宽度信息
- Spring+ActiveMQ实现消息收发和订阅
- 【js学习笔记-060】子类VS组合
- 找工作总结
- android 中Xml里面的id重名问题