java – 从部分或驼峰案例字符串匹配的正则表达式?
发布时间:2020-12-15 08:29:46 所属栏目:Java 来源:网络整理
导读:给定一个部分或驼峰的字符串,我想要一个正则表达式匹配.例如,如果搜索集包含字符串“MyPossibleResultString”,我希望能够将其与以下内容匹配: MyPossibleResultString MPRS MPRString MyPosResStr M. 我还想包括通配符匹配,例如: MyP * RString * PosResS
给定一个部分或驼峰的字符串,我想要一个正则表达式匹配.例如,如果搜索集包含字符串“MyPossibleResultString”,我希望能够将其与以下内容匹配:
> MyPossibleResultString 我还想包括通配符匹配,例如: > MyP * RString 如果我不清楚我的意思,我能想到的唯一例子就是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中将第一个匹配返回给您的驼峰案例查询. 编辑:我已经添加了一行来处理通配符,因为在我疲倦的昏迷中,我并不理解它们的必要性 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |