匹配由一个或多个单行注释组成的多行注释块
Match multiple line comment blocks composed of one or more single line comments
我需要一个正则表达式来匹配由一个或多个单行注释组成的注释块。
单行注释:
# 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 次或多次出现以换行符开头的组,可选 spaces,后跟注释起始字符和该行的其余部分:
[;#%|*].*(?:(?:\r\n|\r|\n) *[;#%|*].*)*
[;#%|*]
- 初始注释字符
.*
- 第一行的其余部分
(?:(?:\r\n|\r|\n) *[;#%|*].*)*
- 重复 0 次或多次:
(?:\r\n|\r|\n)
- 换行符(如果你事先知道换行符的格式,你可以简化它,例如,也许只是 \n
)
- space 后跟 * - 0 个或多个 spaces
[;#%|*]
- 初始注释字符
.*
- 其余行
我的猜测是,在这里我们可能需要一个可以传递换行符的表达式,例如
[;#%|*]([\s\S].*?)(?=[\r\n])
DEMO
我需要一个正则表达式来匹配由一个或多个单行注释组成的注释块。
单行注释:
# 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 次或多次出现以换行符开头的组,可选 spaces,后跟注释起始字符和该行的其余部分:
[;#%|*].*(?:(?:\r\n|\r|\n) *[;#%|*].*)*
[;#%|*]
- 初始注释字符.*
- 第一行的其余部分(?:(?:\r\n|\r|\n) *[;#%|*].*)*
- 重复 0 次或多次:(?:\r\n|\r|\n)
- 换行符(如果你事先知道换行符的格式,你可以简化它,例如,也许只是\n
)- space 后跟 * - 0 个或多个 spaces
[;#%|*]
- 初始注释字符.*
- 其余行
我的猜测是,在这里我们可能需要一个可以传递换行符的表达式,例如
[;#%|*]([\s\S].*?)(?=[\r\n])