Java 正则表达式匹配器总是返回 false

标签 java regex matcher

我有一个字符串表达式,我需要从中获取一些值。字符串如下

#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/

相关文章:

java - 是否可以缩短方法的参数?

java - 安心服务

python - 捕获组如何工作? (wrt python 正则表达式)

java正则表达式清除mediawiki标记

java - 需要更换<p>你是吗? [xxxrecipientFirstNamexxx] </p> 和 <p>你是吗? {recipientFirstName} </p>

scala - 如何使用junit的EqualsWithDelta

Java更好的方法来通过特定值存储int矩阵中的值

java - OpenAI ChatGPT (GPT-3.5) API 错误 : "Invalid URL (POST/chat/v1/completions)"

javascript - 使用 javascript 替换替换多个字符

javascript - 如何限制 javascript/Angular 中第一个位置的空间