我试图编写一个正则表达式来查找LaTeX中的注释行。我创建了以下示例。最后一个正则表达式不起作用。我可以在所有情况下使用一个正则表达式吗?
之前:
\usepackage{test}%COMMENT1
TEXT
%COMMENT2
TEXT
Value is 10\%, this should not be removed. %COMMENT3
begin{tikz}[
important 1,
%COMMENT4
important 2, %COMMENT5
]
TEXT
%COMMENT 6
TEXT
Table: value1&value2\\%COMMENT7
之后:
\usepackage{test}
TEXT
TEXT
Value is 10\%, this should not be removed.
begin{tikz}[
important 1,
important 2,
]
TEXT
TEXT
Table: value1&value2\\
这是我到目前为止所达到的:
(^%(。*?)\ r?\ n)
在不加任何替换的情况下可以发表评论2、4、6
([[\] {2}%(。*?)\ r \ n)
当替换为\\\ r \ n
时,这适用于注释7([[^ \]%(。*?)\ r?\ n)
这不适用于注释1,因为它选择了'}'
答案 0 :(得分:1)
您可以使用
Regex.Replace(s, @"(?m)(?<=(?<!\\)(?:\\{2})*)%.*(?:\r?\n(?!\r?$))?", "")
请参见regex demo
详细信息
(?m)
-RegexOptions.Multiline
内联选项,$
也将在换行符之前匹配。(?<=(?<!\\)(?:\\{2})*)
-任意数量的反斜杠,都是正向查找,匹配的位置不是紧跟在\
之后的位置,然后匹配0个或多个重复的双反斜杠%
-一个%
符号.*
-尽可能多的除LF以外的任何0+个字符(?:\r?\n(?!\r?$))?
-可选的非捕获组匹配
\r?\n
-可选CR,然后是LF ... (?!\r?$)
-没有立即跟随可选的CR和行尾。