我正在尝试从consul输出中提取一组字符串。 我想要做的是删除以
开头的所有字符串实例1110 0001
输入字符串
/usr/lib/ocf/resource.d/
在上面的示例字符串中,它是
的字符串-rwxr-xr-x. 1 root root 971 Sep 22 13:15 /usr/lib/ocf/resource.d/cloud_init_ocf.sh/n-rwxr-xr-x. 1 root root 662 Aug 28 11:25 /usr/lib/ocf/resource.d/credentialmanagercliRestartVM.sh/n-rwxr-xr-x. 1 root root 843 Sep 28 11:13 /usr/lib/ocf/resource.d/jboss_healthcheck.sh
我尝试了什么
我试图匹配开头的字符串
/usr/lib/ocf/resource.d/cloud_init_ocf.sh
/usr/lib/ocf/resource.d/credentialmanagercliRestartVM.sh
/usr/lib/ocf/resource.d/jboss_healthcheck.sh
I got from here
代码
\\b/usr/lib/ocf/resource.d/.*\\b
我认为问题是在每行末尾插入的 regexChecker("\\b/usr/lib/ocf/resource.d/.*\\b", output);
private ArrayList<String> regexChecker(String regEx, String str2Check) {
final ArrayList<String> result = new ArrayList<>();
Pattern checkRegex = Pattern.compile(regEx);
Matcher regexMatcher = checkRegex.matcher(str2Check);
String regexMatch;
while (regexMatcher.find()) {
if (regexMatcher.group().length() != 0) {
regexMatch = regexMatcher.group();
result.add(regexMatch);
}
}
return result;
}
字符。
答案 0 :(得分:2)
试试这种方式
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main{
public static void main(String[] args) {
String regex = "(\\/usr\\/lib\\/ocf\\/resource\\.d\\/[a-zA-Z_]*(\\.sh[\\s|]?)?)";
String string = "-rwxr-xr-x. 1 root root 971 Sep 22 13:15 /usr/lib/ocf/resource.d/cloud_init_ocf.sh/n-rwxr-xr-x. 1 root root 662 Aug 28 11:25 /usr/lib/ocf/resource.d/credentialmanagercliRestartVM.sh/n-rwxr-xr-x. 1 root root 843 Sep 28 11:13 /usr/lib/ocf/resource.d/jboss_healthcheck.sh";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
int i =1;
while (matcher.find()) {
System.out.println("Group " + i++ + ": " + matcher.group(0));
}
}
}
,输出
Group 1: /usr/lib/ocf/resource.d/cloud_init_ocf.sh
Group 2: /usr/lib/ocf/resource.d/credentialmanagercliRestartVM.sh
Group 3: /usr/lib/ocf/resource.d/jboss_healthcheck.sh