我有一个包含巨大脚本代码的字符串,如下所示:
String script = "node {
stage(someString) {
try {
**parameters= [
[someString],
[someString],
[someString],
[someString],
[someString],
[someString],
[someString],
]**
//some more script
}
}";
我想提取包含数组值数组的parameters变量
我尝试了以下模式,但没有起作用
Pattern pattern = Pattern.compile("parameters= [(.*?)]");
如何使用Regex从脚本字符串变量中提取parameter变量?
提前致谢!
您可以尝试使用:
parameters=\s*\[(.*)]
以上正则表达式的说明:
parameters=
- parameters=
从字面上匹配。\s*
-匹配空白字符零次或多次。\[
- [
从字面上匹配。(.*)]
-表示一个捕获组,捕获之前的所有内容]
。用Java实现的示例:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main
{
private static final Pattern pattern = Pattern.compile("parameters=\\s*\\[(.*)]", Pattern.DOTALL);
public static void main(String[] args) {
String string = "node {\n"
+ " stage(someString) {\n"
+ " try {\n"
+ " **parameters= [\n"
+ " [someString],\n"
+ " [someString],\n"
+ " [someString],\n"
+ " [someString],\n"
+ " [someString],\n"
+ " [someString],\n"
+ " [someString],\n"
+ " ]**\n"
+ " //some more script";
StringBuilder sb = new StringBuilder();
Matcher matcher = pattern.matcher(string);
while(matcher.find()){
// Replaced all the unwanted spaces and commas. You can address that accordingly.
sb.append(matcher.group(1).replaceAll("[\\s,]+", " "));
}
System.out.println(sb.toString());
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句