加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从部分或驼峰案例字符串匹配的正则表达式?

发布时间:2020-12-15 08:29:46 所属栏目:Java 来源:网络整理
导读:给定一个部分或驼峰的字符串,我想要一个正则表达式匹配.例如,如果搜索集包含字符串“MyPossibleResultString”,我希望能够将其与以下内容匹配: MyPossibleResultString MPRS MPRString MyPosResStr M. 我还想包括通配符匹配,例如: MyP * RString * PosResS
给定一个部分或驼峰的字符串,我想要一个正则表达式匹配.例如,如果搜索集包含字符串“MyPossibleResultString”,我希望能够将其与以下内容匹配:

> MyPossibleResultString
> MPRS
> MPRString
> MyPosResStr
> M.

我还想包括通配符匹配,例如:

> MyP * RString
> * PosResString
>我的*字符串

如果我不清楚我的意思,我能想到的唯一例子就是Eclipse的“Open Type”对话框,它几乎就是我正在寻找的确切行为.我对使用正则表达式并不太了解,所以如果我正在寻找Java解决方案,我不确定它是否重要.

解决方法

好吧,如果你已经支持第一个例子中描述的匹配,我真的不明白为什么你需要通配符功能.这就是我放在一起的东西.给定查询字符串查询,您使用正则表达式来创建正则表达式:

String re = "b(" + query.replaceAll("([A-Z][^A-Z]*)","$1[^A-Z]*") + ".*?)b";

例如,查询MyPosResStr将成为正则表达式:

b(My[^A-Z]*Pos[^A-Z]*Res[^A-Z]*Str[^A-Z]*.*?)b

然后使用此正则表达式使用Matcher.find方法进行匹配,得到如下内容:

public static String matchCamelCase(String query,String str) {
    query = query.replaceAll("*",".*?");
    String re = "b(" + query.replaceAll("([A-Z][^A-Z]*)","$1[^A-Z]*") + ".*?)b";

    System.out.println(re);
    Pattern regex = Pattern.compile(re);

    Matcher m = regex.matcher(str);

    if  (m.find()) {
        return m.group();
    } else return null;
}

这将在字符串str中将第一个匹配返回给您的驼峰案例查询.

编辑:我已经添加了一行来处理通配符,因为在我疲倦的昏迷中,我并不理解它们的必要性

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读