Java 要查找的正则表达式

Java 要查找的正则表达式,java,regex,Java,Regex,我正在开发一个Java程序,它可以替换文本文件中的变量值 要替换的变量封装为 side /*{{*/ red /*TEAM}}*/ 或 所以在第一种情况下,我想用另一个值替换red值。第二次我将替换200 在这里,我逐行阅读文件,寻找该模式 File file = new File(currentFile); try { Scanner scanner = new Scanner(file); int lineNum = 0

我正在开发一个Java程序,它可以替换文本文件中的变量值

要替换的变量封装为

 side    /*{{*/ red /*TEAM}}*/ 

所以在第一种情况下,我想用另一个值替换red值。第二次我将替换200

在这里,我逐行阅读文件,寻找该模式

       File file = new File(currentFile);

    try {
        Scanner scanner = new Scanner(file);


        int lineNum = 0;
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            lineNum++;
            if (<match regex expression for xxxxx /*{{*/ value /*VariableNAME}}*/ >) {

            }
        }
    } catch (Exception e) {
        System.out.println(e.toString());
        //handle this
    }
输出将文件中的行更改为

side    /*{{*/ blue /*TEAM}}*/ 

字符串“TEAM”是标识符。

您可以在下面使用
string.replaceAll()
方法

(?<=\/\*\{\{\*\/ ).*?(?= \/\*(TEAM|RANGE)\}\}\*\/)
输出:

side    /*{{*/ XXX /*team}}*/ 
detect_range   /*{{*/ 000 /*RANGE}}*/  nm

如果你想得到“团队”或“范围”,那么从索引1中得到它

Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str1);
if (m.find()) {
    System.out.println(m.group(1));
}

您可以使用此正则表达式:

/\*{{\*/ *(\S+) */\*[^}]*}}\*/
抓到被俘的第1组


/**/
对,它们是模式的一部分,还是仅仅是注释标记?
团队
范围
是动态值?您需要更清楚地指定问题。显示一些实际输入和预期输出的示例,并解释替换值如何映射到它们所替换的标记。TEAM和RANGE只是变量名。我必须检索变量名才能知道要附加哪些值。例如,我如何提取变量名“team”,以比较它以知道要插入哪些值。只需从索引1中获取匹配的组,如演示中所示。您也需要代码吗?这会很有帮助。在模式字符串中,pattern=“(?i)(?是的,您可以使用它,正如我提到的,使用
\w+
而不是
(团队范围)
。您是否只寻找变量名,然后我可以优化它,如果您需要的话?
side    /*{{*/ XXX /*team}}*/ 
detect_range   /*{{*/ 000 /*RANGE}}*/  nm
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str1);
if (m.find()) {
    System.out.println(m.group(1));
}
/\*{{\*/ *(\S+) */\*[^}]*}}\*/