在定义我需要的regEx时遇到了很多麻烦。...
基本上,这个想法是检测所有以,
或;
字符结尾的行。为此,我定义了以下正则表达式:
(,|;)$
这可以很好地工作,但是我有一个例外,那就是如果该行中有一个*
字符(不一定从头开始,而是在某个位置),那么我就不想检测到该匹配项。根据此示例:
/**
* Here there's a comment I don't want to find,
* but after this comment I do
*/
detectMe;
other,
我打算找到2个小组,第一个小组
/**
* Here there's a comment I don't want to find,
* but after this comment I do
*/
detectMe;
第二个
other,
我尝试了很多事情,例如未捕获组,否定前瞻以及以[^\s*\*]
开头的字符串也没有成功。有办法吗?
我尝试过的一些regEx ...
^[^\*](.*?)(,|;)$
^[^\s*\*](.*?)(,|;)$
答案 0 :(得分:1)
要匹配可选的C注释以及以;
或,
结尾的下一行,您可以使用
/(?:\/\*+[^*]*\*+(?:[^\/*][^*]*\*+)*\/\r?\n)?.*[;,]$/gm
详细信息
(?:\/\*+[^*]*\*+(?:[^\/*][^*]*\*+)*\/\r?\n)?
-可选(因为在该组之后有一个?
量词)non-capturing group匹配1个或0个匹配项
\/\*+[^*]*\*+(?:[^\/*][^*]*\*+)*\/
-一个C comment pattern \r?\n
-CRLF或LF结尾.*[;,]$
-以;
或,
结尾的整行(由于$
修饰符,m
是行锚的结尾)。 答案 1 :(得分:0)
您可以使用此正则表达式:
/^[^*]*?[,;]$/gm
它将首先对任意数量的不是'*
'的字符进行数学运算,然后在该行的末尾匹配',
'或';
'。它使用global
和multiline
标志来匹配所有行。