java regex 详解_java regex详解

public class RegexTest {

public static void main(String[] args) {

Pattern pattern=Pattern.compile("(\\d{3})(\\d{1})");    //一旦编译,任何地方皆可使用

Matcher matcher=pattern.matcher("111222");

while (matcher.find()) {

//若group参数为空,则返回整个匹配串,

// 否则,从1开始,按括号位置从左到右,作为参数,取出相应括号的内容

System.out.println(matcher.group(2));

}

System.out.println("-------------------------");

//字符串是否满足表达式

System.out.println(Pattern.compile("\\d(.|\n)*").matcher("2\n").matches());

System.out.println("-------------------------");

String input="This!!unusual use!!of exclamation!!points";

System.out.println(Arrays.asList(

Pattern.compile("!!").split(input)));

//其实这样做是麻烦的,直接使用 "我是一个测试的字符串".split("!!")就能得到结果

System.out.println("-------------------------");

Matcher m2=Pattern.compile("[frb][aiu][gx]")

.matcher("fix the rug with bags");

while (m2.find())

System.out.println(m2.group());

m2.reset("fix the rig with rags"); //重置匹配字符串

while (m2.find())

System.out.println(m2.group());

System.out.println("m2-------------------------");

}

/** * 替换字符串中的一些有固定规律的字符串,并根据其内容重新组合字符串 * 如: * "one cat two cat12 in the yard"; * 换成: * one cbt two cbt22 in the yard * @param charSeq * @return */

public static StringBuffer changeReplaceString(String charSeq) { // String charSeq = "one cat two cat12 in the yard"; Pattern p = Pattern.compile("cat\\d*"); Matcher m = p.matcher(charSeq); StringBuffer sb = new StringBuffer(); //字符串的替换 while (m.find()) { //获取匹配到的字符串 String myFind = m.group(); /* 将字符串进行一定的替换,我们为什么没有使用 m.replaceAll("dog") 呢? 因为它不能把获取到的字符串进行一个有规则的2次替换 比如我想把 cat12,换成cat22,而cat保持不变 由于java对拉姆达和闭包函数支持性的问题,想做到这一点,会有很多代码生成*/

m.appendReplacement(sb, myFind.replace("a", "b").replace("1", "2")); } m.appendTail(sb); System.out.println(sb.toString()); // 结果: one cbt two cbt22 in the yard return sb;

} /** * 正则表达式快速替换 */ public static void quickReplace() { String str = "正则表达式 Hello World,正则表达式 Hello World"; Pattern pattern = Pattern.compile("正则表达式"); Matcher matcher = pattern.matcher(str); //替换第一个符合正则的数据 System.out.println(matcher.replaceAll("Java")); System.out.println(matcher.replaceFirst("Java")); System.out.println("--------"); //replaceAll的第一个参数可以传正则表达式,其实下面的代码更简便 System.out.println(str.replaceAll("正则表达式","Java")); System.out.println(str.replaceFirst("正则表达式","Java")); }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Oracle数据库中,`REGEX_LIKE`函数用于在字符串中匹配正则表达式。其基本语法如下: `REGEX_LIKE (source_string, pattern, match_parameter)` `source_string`:要匹配的字符串。 `pattern`:用于匹配的正则表达式模式。 `match_parameter`:匹配参数,可选项。指定匹配的方式和规则。 正则表达式模式可以包括以下元字符和模式修饰符: 1. 元字符: - `.`:匹配任意单个字符。 - `*`:匹配前一个元素的零个或多个实例。 - `+`:匹配前一个元素的一个或多个实例。 - `?`:匹配前一个元素的零个或一个实例。 - `{n}`:匹配前一个元素的n个实例。 - `{n,}`:匹配前一个元素的至少n个实例。 - `{n,m}`:匹配前一个元素的至少n个实例,最多m个实例。 - `^`:匹配字符串的开头。 - `$`:匹配字符串的结尾。 - `[]`:匹配括号内的任意一个字符。 - `[^]`:匹配不在括号内的任意字符。 2. 模式修饰符: - `i`:忽略大小写。 - `c`:区分大小写。 - `m`:多行模式,将字符串视为多行。 - `n`:使用原始匹配方式。 例如,`REGEX_LIKE('abc123', '^abc\d{3}$', 'i')`将返回`TRUE`,因为它匹配一个以"abc"开头,且后跟三个数字的字符串。 另外,还可以结合其他正则表达式函数(如`REGEXP_SUBSTR`、`REGEXP_REPLACE`等)和标准SQL函数(如`LOWER`、`UPPER`等)来实现更复杂的字符串匹配和变换操作。 需要注意的是,`REGEX_LIKE`函数在进行正则表达式匹配时会耗费一定的计算资源,因此在大数据量和性能需求较高的场景中,可以考虑使用其他更高效的方法来处理字符串匹配的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值