| 符号 | 次数 |
|---|---|
| ? | 0次或者1次 |
| * | 0次或者多次 |
| + | 1次或者多次 |
| * + ? | 作用域为该符号前面的字符串 |
| {n} | 精确为 n 次 |
| {n,m} | 精确为 n 到 m 次 |
| 符号 | 描述 |
|---|---|
| ^ | 行开头 注意:^ 在 中括号 开头位置,表示排除中括号内的字符。 |
| $ | 行结尾 |
| \b | 一个字符边界 |
| \B | 一个非字符边界 |
| \A | 输入的开始 |
| \G | 结束前的匹配 |
| \Z | 终端结束前的输入,如果有的话 |
| \z | 最后的输入 |
| 符号 | 等价的正则表达式 |
|---|---|
| \d | [0-9] |
| \D | [^0-9] |
| \w | [a-zA-Z_0-9] |
| \W | [^\w] |
| \s | [\t\n\x0B\f\r] |
| \S | [^\s] |
| ^Hello | 开头要以 Hello 开始。如: Hello World |
|---|---|
| meet you$ | 结尾要以 meet you 结尾。如:nice to meet you |
| ^BTW$ | 只有 BTW 符合要求 |
| op? 或者 op{0,1} | 匹配以 o 开头 且 后面 不包含 p 或 包含一个 p 的字符串。如:o, op, open |
| op* 或者 op{0,} | 匹配以 o 开头 且 后面可包含 p 或 包含多个 p 的字符串。如:o, op, open |
| op+ 或者 op{1,} | 匹配以 o 开头 且 o 后面至少包含 一个 或 多个 p 的字符串。如:op, open |
| o?p+$ | 匹配以一个 o 或不包含 o, 但至少以 p 结尾的字符串。如:p, op |
| jk{2} | 匹配条件: j后面含有 2 个k 的字符串 |
| jk{2,} | 匹配条件: j后面含有 2 个或 2 个以上个k 的字符串 |
| jk{2,5} | 匹配条件: j后面含有 2 至 5 个 k 的字符串 |
| jk(lmn)* | 匹配条件: jk 后面 没有 或 含有 1 个 lmn 的字符串 |
| jk(lmn){1,5} | 匹配条件: jk 后面含有 1 - 5 个 lmn 的字符串 |
| jack|tom | 匹配条件: 含有 jack 或 tom 的字符串 |
| (hi|j)klmn | 匹配条件: 含有 hiklmn 或 jklmn 的字符串 |
| (x|y)*z | 匹配条件: 含有 0 个 或多个 x 或 y, 并且 x 或 y 后面含有 z 的字符串 |
| . | 可代表 除去 \n 以外 的任意一个字符 |
| [\n.] | 包含 \n 的任意一个字符 |
| [] | 中括号 只匹配 一个字符。如:[abc] 匹配单个 a, b 或 c 。 同义: a|b|c |
| [a-g] | 匹配条件: a - g 单个字符。同义: a|b|c|d|e|f|g 或 [abcdefg] |
| ^[a-zA-Z] | 匹配条件: 以大小写开头的字符串 |
| b.[0-9] | 匹配条件: b 后面含有一个除了 \n 以外的任意字符,并且任意字符后面含有一个 0-9 的阿拉伯数字 |
| ^.{3}$ | 匹配条件: 以三个任意字符串结尾 |
| [0-9]% | 匹配条件: 如同 6%, 9% 的字符串 |
| ,[0-9a-zA-Z] | 匹配条件: , 加 数字或字母 结尾的字符串。 |
| %[^a-zA-Z]% | 匹配条件: 在两个百分号之间匹配不含有字母的字符串。如:%1%, %123% |
| [*\+?{}.] | 匹配条件: *\+?{}. 这些特殊字符在中括号内将失去特殊含义,匹配含有这些字符的字符串。 |
| public static void main(String[] args) { String source = "[16,神马思特奇] 尊敬的客户:${客户名称} " + "截止到${月}月${日}日" + "您的消费总额为:${消费总额}" + "第一行${客户名称}" + "[13,temp_sub]" + "最后一行" + "${费用总额}" + "[15,小蜜蜂]测试结束"; String patternString = "[\\[([^\\]]+)\]()]"; Pattern pattern = null; try { pattern = Pattern.compile(patternString); Matcher matcher = pattern.matcher(source); System.out.println(matcher.groupCount()); boolean rs = matcher.find(); // System.out.println(matcher.group(0)); while(rs){ for(int i = 1 ;i<=matcher.groupCount();i++){ source = source.replaceAll("[\\["+matcher.group(i)+"\]()]", ""); System.out.println(matcher.group(i)); matcher = pattern.matcher(source); } rs = matcher.find(); } // String s = matcher.replaceAll("KK"); // System.out.println(s); } catch (PatternSyntaxException e) { System.out.println("Pattern syntax error"); System.exit(1); } } |
|---|