String regex = "电源\\\\d+报警状态,磁控管状态\\\\d"; List<String> keys = new ArrayList<>(); String[] split = regex.split(","); for (int j = 0; j < split.length; j++) { String s = split[j]; keys.add(s); } String ar = "磁控管状态4"; keys.forEach(key -> { // 创建 Pattern 对象 Pattern pattern = Pattern.compile(key); // 创建 Matcher 对象 Matcher matcher = pattern.matcher(ar); // 查找匹配的字符串 while (matcher.find()) { System.out.println("111"); } }); 代码修正
时间: 2024-02-14 08:27:06 浏览: 94
根据你的需求,这里是修正后的代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String regex = "电源\\\\d+报警状态,磁控管状态\\\\d";
List<String> keys = new ArrayList<>();
String[] split = regex.split(",");
for (int j = 0; j < split.length; j++) {
String s = split[j];
keys.add(s);
}
String ar = "磁控管状态4";
keys.forEach(key -> {
// 创建 Pattern 对象
Pattern pattern = Pattern.compile(key);
// 创建 Matcher 对象
Matcher matcher = pattern.matcher(ar);
// 查找匹配的字符串
while (matcher.find()) {
System.out.println("111");
}
});
}
}
```
这段代码将遍历 `keys` 列表中的每个正则表达式,并尝试匹配 `ar` 字符串。如果有匹配的字符串,则输出 "111"。
请注意,正则表达式中的反斜杠 `\` 需要进行转义,因此在 Java 代码中,需要写成 `\\\\` 来表示一个反斜杠。这样才能正确匹配类似于 "电源\\d+报警状态" 和 "磁控管状态\\d" 的字符串模式。
阅读全文