正则表达式

  --源于网络
  题目:已知一个字符串字符串"aaaabbbbbcccbbbbbd",要求最终排序是
  bbbbb
  bbbbb
  aaaa
  ccc
  d
  算法: /** * */ package java_string; /** * @author clydelou * */ import java.util.Arrays; import java.util.Comparator; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author clydelou * */ public class StringRegularExpression { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String[] strs = str.split("(?() { public int compare(String a, String b) { return b.length() - a.length(); } }); for (String s : strs) System.out.println(s); Pattern p=Pattern.compile("(?!un)\\w+"); Matcher m=p.matcher("unknown"); System.out.println(m.matches()); m=p.matcher("known"); System.out.println(m.matches()); p=Pattern.compile("\\w+(?=\\d)"); m=p.matcher("love0"); System.out.println(m.find()); System.out.println(m.start()+"-"+m.end()+" "+m.group()); m=p.matcher("love0you0forever"); System.out.println(m.find()); System.out.println(m.start()+"-"+m.end()+" "+m.group()); m=p.matcher("love0you0for0ever"); System.out.println(m.find()); System.out.println(m.start()+"-"+m.end()+" "+m.group()); m=p.matcher("love0you0for0ever0"); System.out.println(m.find()); System.out.println(m.start()+"-"+m.end()+" "+m.group()); } }
  后向引用
  对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从1 开始,连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。
  (?: )
  非捕获组。
  (?= )
  零宽度正预测先行断言。仅当子表达式在此位置的右侧匹配时才继续匹配。例如,\w+(?=\d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。
  (?! )
  零宽度负预测先行断言。仅当子表达式不在此位置的右侧匹配时才继续匹配。例如,\b(?!un)\w+\b 与不以 un 开头的单词匹配。
  (?表达式在此位置的左侧匹配时才继续匹配。例如,(?表达式不在此位置的左侧匹配时才继续匹配。
  (?> )
  非回溯子表达式(也称为贪婪子表达式)。该子表达式仅完全匹配一次,然后就不会逐段参与回溯了。(也就是说,该子表达式仅与可由该子表达式单独匹配的字符串匹配。)
  分组构造:
  最基本的构造方式就是(),在左右括号中括起来的部分,就是一个分组;
  运行结果: bbbbb bbbbb aaaa ccc d false true true 0-4 love true 0-8 love0you true 0-12 love0you0for true 0-17 love0you0for0ever
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值