java.util.regex.Pattern
\\ 反斜线字符
\n 换行符('\u000A')
\r 回车符('\u000D')
字符类运算符的优先级如下所示,按从最高到最低的顺序排列:
1 字面值转义 \x
2 分组 [...]
3 范围 a-z
4 并集 [a-e][i-u]
5 交集 [a-z&&[aeiou]]
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C)
组0始终代表整个表达式。 组引用\n
. 任何字符(与行结束符可能匹配也可能不匹配)
\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 输入的结尾
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
XY X后跟 Y
X|Y X或Y
(X) X作为捕获组
字段
public static final int DOTALL 启动dotall模式,表达式 . 可以匹配任何字符,包括行结束符。默认情况下,此表达式不匹配行结束符。
public static final int MULTILINE 启用多行模式 表达式 ^ 和 $ 仅分别在行结束符前后匹配,或者在输入序列的结尾处匹配。默认情况下,这些表达式仅在整个输入序列的开头和结尾处匹配。
public static Pattern compile(String regex)
public static Pattern compile(String regex, int flags)
public static boolean matches(String regex, CharSequence input)
public Matcher matcher(CharSequence input) 围绕模式匹配input。
public String[] split(CharSequence input, int limit) 围绕模式的匹配拆分input。
limit>0,返回数组的长度不大于limit
limit<0,数组可以为任意长度
limit=0,数组可以为任意长度,并且将丢弃尾部空字符串。
java.util.regex.Matcher
public boolean matches()
public boolean find()
public int start() 上次匹配的初始索引
public int end() 上次匹配字串的偏移量
public Matcher reset() 重置匹配器
Matcher usePattern(Pattern newPattern) 更改此 Matcher 用于查找匹配项的 Pattern
String 为final, 不可变可共享
String(byte[] bytes, int offset, int length, String charsetName)
String(char[] value, int offset, int count)
startsWith(String prefix) endsWith(String suffix)
int indexOf(int ch)、int lastIndexOf(int ch)、int indexOf(String str)、int lastIndexOf(String str)
String substring(int beginIndex) 、String substring(int beginIndex, int endIndex)
matches(String regex) == Pattern.matches(regex, str)
String replace(char old, char new) String replace(str old, str new)
String replaceFirst(String regex, String replacement)
String replaceAll(String regex, String replacement)
== Pattern.compile(regex).matcher(str).replaceAll(replacement)
String[] split(String regex,int limit) limit模式应用的次数。负数表示不限次数。
"boo:and:foo" 被正则表达式"o" 划分: { "b", "", ":and:f" }
toUpperCase()、toLowerCase()、trim()、concat(str)、length()、isEmpty() 、equalsIgnoreCase(str) toCharArray()、getBytes()、getBytes(charset)
charAt(int index)、compareTo(str) 、int hashCode() 、equals(str)
static String format(String format, Object... args)
static String valueOf(xxx) 如果参数为 null,则字符串等于 "null";否则,返回 obj.toString() 的值。
intern() 和字符串常量池有关
final StringBuffer 线程安全的可变字符序列。 不可能继承String
StringBuffer(str)、StringBuffer()
append(T x)
delete(int start, int end)
insert(int offset, T x)
reverse()
final StringBuilder 和StringBuffer的区别:不保证同步