gpt4 book ai didi

java - 如何对从java文件中读取的模式使用转义字符

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:04 25 4
gpt4 key购买 nike

我正在从文件中读取一些模式并在字符串匹配方法中使用它。但是在从文件中读取模式时,转义字符不起作用

例如,我的数据很少,例如“abc.1”、“abcd.1”、“abce.1”、“def.2”

如果字符串匹配“abc.1”(即 abc),我想做一些 Activity 。后跟任何字符或数字我有一个文件存储要匹配的模式,例如模式 abc\..*

但是当我从文件中读取模式并在字符串匹配方法中使用它时,它不起作用。

任何建议

演示该问题的示例 Java 程序是:

package com.test.resync;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class TestPattern {

public static void main(String args[]) {
// raw data against which the pattern is to be matched
String[] data = { "abc.1", "abcd.1", "abce.1", "def.2" };

String regex_data = ""; // variable to hold the regexpattern after
// reading from the file

// regex.txt the file containing the regex pattern
File file = new File(
"/home/ekhaavi/Documents/WORKSPACE/TESTproj/src/com/test/regex.txt");

try {
BufferedReader br = new BufferedReader(new FileReader(file));
String str = "";
while ((str = br.readLine()) != null) {
if (str.startsWith("matchedpattern")) {
regex_data = str.split("=")[1].toString(); // setting the
// regex pattern

}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

/*if the regex is set by the below String literal it works fine*/

//regex_data = "abc\\..*";

for (String st : data) {
if (st.matches(regex_data)) {
System.out.println(" data matched "); // this is not printed when the pattern is read from the file instead of setting it through literals
}
}
}

}

regex.txt 文件具有以下条目

matchedpattern=abc\..*

最佳答案

使用Pattern.quote(String)方法:

if (st.matches(Pattern.quote(regex_data))) {
System.out.println(" data matched "); // this is not printed when the pattern is read from the file instead of setting it through literals
}

还有一些其他问题需要考虑解决:

  • 您将覆盖 while 循环中 regex_data 的值。您是否打算将所有正则表达式模式存储在列表中?

  • String#split()[0] 将仅返回 String。您不需要对此调用 toString()

关于java - 如何对从java文件中读取的模式使用转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23420963/

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