簡體   English   中英

正則表達式捕獲 LaTeX 注釋

[英]Regex to capture LaTeX comments

我正在嘗試編寫一個正則表達式來在 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,因為它選擇了“}”

您可以使用

Regex.Replace(s, @"(?m)(?<=(?<!\\)(?:\\{2})*)%.*(?:\r?\n(?!\r?$))?", "")

查看正則表達式演示

細節

  • (?m) - RegexOptions.Multiline內聯選項, $也將在換行符之前匹配。
  • (?<=(?<!\\\\)(?:\\\\{2})*) - 任何偶數數量的反斜杠,它是一個正后視匹配的位置,它不是緊跟在\\前面,然后是任何 0 或更多重復的雙反斜杠
  • % - %符號
  • .* - 除 LF 之外的任何 0+ 字符,盡可能多
  • (?:\\r?\\n(?!\\r?$))? - 一個可選的非捕獲組匹配
    • \\r?\\n - 一個可選的 CR,然后是 LF...
    • (?!\\r?$) - 不緊跟可選的 CR 和行尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM