我有一个字符串表达式,我需要从中获取一些值。字符串如下
#min({(((fields['example6'].value + fields['example5'].value) * ((fields['example1'].value*5)+fields['example2'].value+fields['example3'].value-fields['example4'].value)) * 0.15),15,9.087})
从这个 stribg 中,我需要获取一个字符串数组列表,其中包含“example1”、“example2”等值。
我有一个如下所示的 Java 方法:
String regex = "/fields\\[['\"]([\\w\\s]+)['\"]\\]/g";
ArrayList<String> arL = new ArrayList<String>();
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(expression);
while(m.find()){
arL.add(m.group());
}
但是m.find()
总是返回false
。我有什么遗漏的吗?
最佳答案
问题出在“/”上。如果你想提取的只是字段名称,你应该使用m.group(1):
String regex = "fields\\[['\"]([\\w\\s]+)['\"]\\]";
ArrayList<String> arL = new ArrayList<String>();
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(expression);
while(m.find()){
arL.add(m.group(1));
}
关于Java 正则表达式匹配器总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31111207/