我必须识别.c文件中的某些字符。现在我不得不承认#define行,但我想排除定义后的评论。例如:Java中的正则表达式解释source.c文件
#define KERNEL_VERSION(a,b,c) ((a)*65536+(b)*256+(c)) /* We're doing kernel work */
我有这方面的结果:
group1="KERNEL_VERSION"
group2="(a,b,c) ((a)*65536+(b)*256+(c)) /* We're doing kernel work */"
我想摆脱/* We're doing kernel work */
我已经尝试了一切我无法摆脱它。下面是我在哪里:
Pattern cdef = Pattern.compile("^#[\\t ]*define[\\t ]+(\\w+)[\\t ]*(.*)",Pattern.DOTALL);
我曾尝试加入^[\\/\\*\\w+]
或[\\t ]+^\\/+\\*\\w*\\
.....字符串的结束,但无论是我失去所有的第二组,或者什么也不做
非常感谢,
!!!!编辑:我想找到一种方法来消除C评论,所以:/ *评论* /从模式
编辑2:我看到它的方式我认为它应该有一种方法来给出以下建议: “如果你发现‘/ ’,不采取任何东西,我读通过行的文件行,以便无论是后/可以扔掉:
这是我处理第二组:“......()”所以我尝试添加^ [\/\]在我的字符串的结尾,但它不工作,我失去了整个第二部分
我没有解决方案。想想很难实现。我在这里问了类似的东西:http://stackoverflow.com/questions/5374843/regex-to-find-an-uncommented-println。看一看。 – Heisenbug
谢谢,但它不完全相同,因为基本上你正在搜索System.out ...但我正在搜索的是/ * xxxx */ – vallllll