java正则表达式实例

次数匹配符号
符号次数
?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);
  }

 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值