我需要一个正则表达式来匹配由一个或多个单行注释组成的注释块。
单行注释:
# This is a single line comment
由多个单行注释组成的注释块:
# This is a multiple line comment
# which is just a block of single line comments
# that are strung together
注释行的第一个字符可以以以下任何字符开头:;#%|*
我发现以下正则表达式与各个评论行匹配:[;#%|*]{1}(.+)
但是我不知道如何匹配具有多行的块。我想保留整个块中的所有字符,包括新行。
匹配注释的开头、其行的其余部分,然后重复 0 次或多次出现的组,该组以换行符、可选空格开头,后跟注释开始字符和该行的其余部分:
[;#%|*].*(?:(?:rn|r|n) *[;#%|*].*)*
请参阅此正则表达式演示。
-
[;#%|*]
- 初始注释字符 -
.*
- 第一行的其余部分 -
(?:(?:rn|r|n) *[;#%|*].*)*
- 重复 0 次或更多次:-
(?:rn|r|n)
- 换行符(如果您事先知道换行符的格式,则可以简化此操作,例如,也许只是n
( - 空格后跟 * - 0 个或更多空格
-
[;#%|*]
- 初始注释字符 -
.*
- 其余线路
-
我的猜测是,这里我们可能需要一个传递换行符的表达式,例如
[;#%|*]([sS].*?)(?=[rn])