gpt4 book ai didi

java - 如何通过java正则表达式在长字符串中grep相同格式的子字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 12:43:56 24 4
gpt4 key购买 nike

例如,我想从这个长字符串中 grep /css/screen/shared/styles.css/css/screen/nol/styles.css :

@import "/css/screen/shared/styles.css";
@import "/css/screen/nol/styles.css";

请注意,这个长字符串包含 2 行,它在 java 代码中应该如下所示:

String sentence = "@import \"/css/screen/nol/styles.css\";\n@import \"/css/screen/shared/styles.css\";";

到目前为止,我已经:

"@import\\s\"(.*?)\";\n"

它只识别“/css/screen/shared/styles.css”,但忽略“/css/screen/nol/styles.css”。

这是我的代码:

public static String getImportCSS(String sentence){
String result = "";
if(sentence.length() == 0) return null;
if(sentence.indexOf("@import ") != -1){
Pattern regex = Pattern.compile("@import\\s\"(.*)\";");
Matcher regexMatcher = regex.matcher(sentence);
if(regexMatcher.find()){
for(int i = 0; i <= regexMatcher.groupCount(); i++){
result = regexMatcher.group(1);
}
}
return result;
}
return null;
}

我在这里做错了什么?谢谢!

最佳答案

您无法匹配第二个字符串,因为您的正则表达式末尾有 LF (\n)。

删除它,模式将找到这两个字符串。但是,我建议使用否定字符类 [^"]* (" 之外的零个或多个字符)而不是惰性点匹配,因为字符串不应包含双引号:

@import\s*\"([^"]*)\";

请参阅regex demo

Java demo :

String str = "@import \"/css/screen/shared/styles.css\";\n@import \"/css/screen/nol/styles.css\";"; 
Pattern ptrn = Pattern.compile("@import\\s*\"([^\"]*)\";");
Matcher matcher = ptrn.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}

关于java - 如何通过java正则表达式在长字符串中grep相同格式的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36535901/

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