如何使用正则表达式从DELETE
检索ROLE_DELETE_USER
字符串?
String role = "ROLE_DELETE_USER";
Pattern pattern = Pattern.compile("???");
Matcher matcher = pattern.matcher(role);
System.out.println(matcher.group());
答案 0 :(得分:2)
你可以做到
String delete = role.substring(role.indexOf("_") + 1, role.lastIndexOf("_"));
答案 1 :(得分:0)
仅解析一个字符串示例没有用处,因为您可以通过多种方式完成此操作。如果你愿意,这里有几种模式:
[A-Z]+_(.*)_[A-Z]+
[A-Za-z]+_(.*)_[A-Za-z]+
哪个会出现:
String role = "ROLE_DELETE_USER";
Pattern pattern = Pattern.compile("[A-Z]+_(.*)_[A-Z]+");
Matcher matcher = pattern.matcher(role);
matcher.find();
System.out.println(matcher.group(1));
另一种解决方案(不使用正则表达式)会将角色分解为字符串数组:
String input = "ROLE_DELETE_USER";
String[] tasks = input.split("_");
//args[0] == "ROLE"
//args[1] == "DELETE"
//args[2] == "USER"
这样可以更灵活地确定您想要对输入做什么。
答案 2 :(得分:0)
正则表达式用于处理模式。你没有太多的模式(只是一个例子),但这至少在一个案例中起作用。
String role = "ROLE_DELETE_USER";
Pattern pattern = Pattern.compile("^ROLE_(.*)_USER$");
Matcher matcher = pattern.matcher(role);
if(matcher.find()) {
System.out.println(matcher.group(1));
}
此处,(.*)
是一个捕获组。 match.group(1)
检索第一个捕获组的内容。
当然,你也可以这样做
String role = "ROLE_DELETE_USER";
role = role.substring(5, role.length() - 5)
System.out.println(role);