我想解析一些C源文件并查找所有字符串(“foo”)。使用java在C代码中搜索字符串
类似的东西工程
String line = "myfunc(\"foo foo foo\", \"bar\");";
System.out.println(line);
String patternStr = "\\\"([^\"]+)\\\"";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher("");
String s;
if(line.matches(".*"+patternStr+".*"))
matcher.reset(line);
while(matcher.find()) {
System.out.println(" FOUND "+matcher.groupCount()+" groups");
System.out.println(matcher.group(1));
}
直到有没有“逃避引号的字符串”像
String line = "myfunc(\"foo \\\"foo\\\" foo\", \"bar\");";
我不知道如何在Java中创建的表达,如“无\”,但与\“ 我在这里发现了一些类似于C的东西http://wordaligned.org/articles/string-literals-and-regular-expressions
在此先感谢
它的工作原理,但请你解释我是如何工作的? 为什么在关闭组括号之前有四个反斜杠(“]”)? – skyman 2010-02-10 15:15:23
我没有试图完全理解它的工作原理 - 我只是将该文章中的正则表达式翻译为Java。为了翻译它,我需要避开引号和反斜杠;因此在Java中每篇文章都变成了“\”,并且每个\变成\\。这就是为什么''''之前的2个反斜杠变为4. – 2010-02-10 15:23:35
我甚至没有尝试这么做,因为这个正则表达式似乎太奇怪了,它不应该在Java上工作;] 如果有人知道会发生什么请求告诉我。 – skyman 2010-02-10 15:58:48