我的问题是我有一个程序通过标准 C 文件(这里我只使用了一个文本文件)。我能够让它识别注释,但是我无法让它识别字符串中无法识别的注释 block 。例如:
printf("This should be counted as a comment: /* */");
但是,它说既然 if 找到了/* */,它就是真的。我正在使用的正则表达式模式
((['"])(?:(?!\2|\\).|\\.)*\2)|\/\/[^\n]*|\/\*(?:[^*]|\*(?!\/))*\*\/
只需让它包含双引号字符串。
最佳答案
正则表达式无法识别上下文相关(Typ-1)语言。它们只能用于匹配 Typ-3 语言。 Chomsky-Hierarchy
由于您尝试匹配的“语言”不是正则,因此您不能使用正则表达式来解决此问题。
我建议您使用不同的方法。就像手动解析输入一样。 也许对于整个解析正则表达式的一小部分是有用的。
关于java - 使用正则表达式查找 C 风格注释 block (/* */) 但不是字符串内部的注释 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58314057/