Java 正则表达式 匹配英文字母

Java 正则表达式 匹配英文字母

目录

语法:

匹配英文字母

要求:

使用*:

使用+:

使用+?:

总结:


在处理中,需要替换es查询语句的条件,要先进行匹配英文单词:

 

语法:

[abc]   表示字母abc中的任意一个

 

数量控制符

贪婪型

?        表示1个或0个。换句话说,表示要不然没有,要不然只有1个

*        表示0个或多个。

+       表示1个或多个。

{n}     表示正好n个

{n,m} 表示n到m个,这是一个左闭右闭区间

{n,}    表示至少n个

 

勉强型

相比于贪婪型,勉强型只是多了一个?:

??       表示1个或0个。换句话说,表示要不然没有,要不然只有1个

*?        表示0个或多个。

+?       表示1个或多个。

{n}?     表示正好n个

{n,m}? 表示n到m个,这是一个左闭右闭区间

{n,}?    表示至少n个

 

匹配英文字母

要求:

如何把

{"bool":{"must":[{"match":{"flow_name":"paramName"}}],"must_not":[{"term":{"reasonCode":157}}]}}

转换为:

 匹配里面的英文字母: bool,must等

 

使用*:

public static void main(String[] args) {
    String content = "{\"bool\":{\"must\":[{\"match\":{\"flow_name\":\"paramName\"}}],\"must_not\":[{\"term\":{\"reasonCode\":157}}]}}";
    System.out.println("============ * ============");
    String pattern = "([a-zA-Z_]*)";
    getMatchWord(content, pattern);
}

public static void getMatchWord(String content, String pattern)
{
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(content);
    while (m.find())
    {
        String group = m.group();
        System.out.println("group: "+group);
    }
}

部分结果:

============ * ============

group:

group:

group: bool

group:

group: must

group:

group:

group: match

group:

group:  

因为*,从0开始,匹配到了空的情况,不符合目的

 

使用+:

public static void main(String[] args) {
    String content = "{\"bool\":{\"must\":[{\"match\":{\"flow_name\":\"paramName\"}}],\"must_not\":[{\"term\":{\"reasonCode\":157}}]}}";
    System.out.println("============ * ============");
    String pattern = "([a-zA-Z_]*)";
    System.out.println("============ + ============");
    pattern = "([a-zA-Z_]+)"; // 匹配单词
    getMatchWord(content, pattern);
}

结果:

============ + ============
group: bool
group: must
group: match
group: flow_name
group: paramName
group: must_not
group: term
group: reasonCode

目标达成

 

使用+?:

public static void main(String[] args) {
    String content = "{\"bool\":{\"must\":[{\"match\":{\"flow_name\":\"paramName\"}}],\"must_not\":[{\"term\":{\"reasonCode\":157}}]}}";
    System.out.println("============ * ============");
    String pattern = "([a-zA-Z_]*)";
    System.out.println("============ + ============");
    pattern = "([a-zA-Z_]+)"; // 匹配单词
    System.out.println("============ +? ============");
    pattern = "([a-zA-Z_]+?)"; // 匹配字母
    getMatchWord(content, pattern);
}

 

部分结果:

============ +? ============
group: b
group: o
group: o
group: l

 

总结:

  匹配英文单词,因为是组合,从1开始,所以适合用“+”,单个字符的话,适合用“+?”。正则表达式的语句多测验,就更好理解,不然有时候傻傻的分不清楚,用起来有时候会出现一些偏差

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天狼1222

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值