Regex 匹配由一个或多个单行注释组成的多行注释块
我需要一个正则表达式,它将匹配由一个或多个单行注释组成的注释块 单行注释:Regex 匹配由一个或多个单行注释组成的多行注释块,regex,plaintext,Regex,Plaintext,我需要一个正则表达式,它将匹配由一个或多个单行注释组成的注释块 单行注释: # 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 注释行的第一个字符可以以以下任意字符开头:;#%|* 我发现以下正则表达式与单个注释行相匹配:[;#%|*]
# 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次或多次出现以新行开头的组,可选空格,后跟注释的开头字符和行的其余部分:
[;#%|*].*(?:(?:\r\n|\r|\n) *[;#%|*].*)*
[##%|*]
-初始注释字符
*
-第一行的其余部分
(?:(?:\r\n |\r |\n)*[#%|*].*)
-重复0次或更多次:
(?:\r\n |\r |\n)
-换行符(如果您事先知道换行符的格式,您可以将其简化,例如,可能只需\n
)
- 空格后跟*-0或更多空格
[##%|*]
-初始注释字符
*
-行的其余部分
我的猜测是,这里我们可能需要一个传递换行符的表达式,例如
[;#%|*]([\s\S].*?)(?=[\r\n])
您的第二个示例不是IMO的多行注释,而是多个单行注释。我编辑了该块上方的文本以反映这一点。我在一些示例文本上尝试了您的建议,它选择了文件中第一个注释块之后一直到文件末尾的所有内容。目前,您的版本与单行注释匹配,但与作为一个块的多行注释不匹配。我通过@certainperformance为我找到了答案。