Java 要查找的正则表达式
我正在开发一个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
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+) */\*[^}]*}}\*/