Sun*_*B M 2 java regex wildcard pattern-matching
我有一个带有外卡的模式字符串说X(例如:abc*).
我还有一组字符串,我必须匹配给定的模式.
例如:
abf - false
abc_fgh - 是的
abcgafa - 是的
fgabcafa - false
我尝试使用正则表达式,它没有用.
这是我的代码
String pattern = "abc*";
String str = "abcdef";
Pattern regex = Pattern.compile(pattern);
return regex.matcher(str).matches();
Run Code Online (Sandbox Code Playgroud)
这返回false
有没有其他方法可以使这项工作?
谢谢
小智 6
只需使用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();
}
Run Code Online (Sandbox Code Playgroud)
是否有"glob"类型模式的java.util.regex等价物?
将通配符转换为正则表达式
| 归档时间: |
|
| 查看次数: |
6943 次 |
| 最近记录: |