gpt4 book ai didi

Java字符串与通配符的匹配

转载 作者:行者123 更新时间:2023-12-02 11:24:25 25 4
gpt4 key购买 nike

我有一个带有通配符 X 的模式字符串(例如:abc*)。

此外,我还有一组必须与给定模式进行匹配的字符串。

例如:

abf - 假

abc_fgh - 正确

abcgafa - 正确

fgabcafa - 假

我尝试使用正则表达式进行相同的操作,但没有成功。

这是我的代码

String pattern = "abc*";
String str = "abcdef";

Pattern regex = Pattern.compile(pattern);

return regex.matcher(str).matches();

这会返回 false

还有其他方法可以实现这个功能吗?

谢谢

最佳答案

只需使用 bash 样式模式到 Java 样式模式转换器:

public static void main(String[] args) {
String patternString = createRegexFromGlob("abc*");
List<String> list = Arrays.asList("abf", "abc_fgh", "abcgafa", "fgabcafa");
list.forEach(it -> System.out.println(it.matches(patternString)));
}

private static String createRegexFromGlob(String glob) {
StringBuilder out = new StringBuilder("^");
for(int i = 0; i < glob.length(); ++i) {
final char c = glob.charAt(i);
switch(c) {
case '*': out.append(".*"); break;
case '?': out.append('.'); break;
case '.': out.append("\\."); break;
case '\\': out.append("\\\\"); break;
default: out.append(c);
}
}
out.append('$');
return out.toString();
}

Is there an equivalent of java.util.regex for “glob” type patterns?
Convert wildcard to a regex expression

关于Java字符串与通配符的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com