我应该如何使用 sublime text regex engine (PCRE) 删除所有乳胶注释?
How should I use sublime text regex engine (PCRE) to delete all latex comments?
我在另一个 post 中关注了这个问题:
提供的答案很棒。不过貌似只能在.net引擎中使用,不过我想用PCRE引擎。那是因为我使用的是 sublime text 并且默认情况下似乎使用了这个引擎。我尝试了很多次,但都没有成功。
乳胶是
\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
Table: value1&value2\ %COMMENT8
Table: value1&value2 \%COMMENT 9
Table: value1&value2\% COMMENT 10
Table: value1&value2\%COMMENT11
我试过了(?m)(?<=(?<!\)(?:\{0}))%.*(?:\r?\n(?!\r?$))?
。仅适用于评论 1-6,8.
可以查到在线结果https://regex101.com/r/zSIBMu/3
如何修改?
使用捕获组:
((?<!\)(?:\\)*)%.*
并用 </code> 作为替换。</p>
<p><a href="https://regex101.com/r/AzcMS8/1" rel="nofollow noreferrer">demo</a></p>
<p>或者,如果支持 <code>\K
:
(?<!\)(?:\\)*\K%.*
替换为空字符串。
注意:我看不出有任何理由删除换行序列,即使注释占满了整行。
您也可以使用 SKIP FAIL 方法:
\(?<!\.)(?>\\)*%(*SKIP)(*F)|%.*
模式匹配:
\(?<!\.)
匹配 \
前面没有 \
(?>\\)*
匹配 \
的可选对
%(*SKIP)(*FAIL)
匹配 %
并跳过匹配
|
或
%.*
匹配 %
和行的其余部分
编辑
Casimir et Hippolyte 建议的非环视解决方案,用于跳过 \
或 \%
的匹配
\[\%](*SKIP)(*F)|%.*
\[\%]
使用字符 class 匹配 \
或 \%
(*SKIP)(*FAIL)
跳过比赛
|
或
%.*
匹配 %
和行的其余部分
我在另一个 post 中关注了这个问题:
提供的答案很棒。不过貌似只能在.net引擎中使用,不过我想用PCRE引擎。那是因为我使用的是 sublime text 并且默认情况下似乎使用了这个引擎。我尝试了很多次,但都没有成功。
乳胶是
\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
Table: value1&value2\ %COMMENT8
Table: value1&value2 \%COMMENT 9
Table: value1&value2\% COMMENT 10
Table: value1&value2\%COMMENT11
我试过了(?m)(?<=(?<!\)(?:\{0}))%.*(?:\r?\n(?!\r?$))?
。仅适用于评论 1-6,8.
可以查到在线结果https://regex101.com/r/zSIBMu/3
如何修改?
使用捕获组:
((?<!\)(?:\\)*)%.*
并用 </code> 作为替换。</p>
<p><a href="https://regex101.com/r/AzcMS8/1" rel="nofollow noreferrer">demo</a></p>
<p>或者,如果支持 <code>\K
:
(?<!\)(?:\\)*\K%.*
替换为空字符串。
注意:我看不出有任何理由删除换行序列,即使注释占满了整行。
您也可以使用 SKIP FAIL 方法:
\(?<!\.)(?>\\)*%(*SKIP)(*F)|%.*
模式匹配:
\(?<!\.)
匹配\
前面没有\
(?>\\)*
匹配\
的可选对
%(*SKIP)(*FAIL)
匹配%
并跳过匹配|
或%.*
匹配%
和行的其余部分
编辑
Casimir et Hippolyte 建议的非环视解决方案,用于跳过 \
或 \%
\[\%](*SKIP)(*F)|%.*
\[\%]
使用字符 class 匹配 (*SKIP)(*FAIL)
跳过比赛|
或%.*
匹配%
和行的其余部分
\
或 \%