标签: regex
我有以下正则表达式来检测缩进(4个空格或制表符)代码块:
^((?:(?: | *\t)+.*\n?)*)$
我的问题是,虽然这确实会检测到代码块,但后面引用(当我使用$1时也包含最终换行符,我希望它在最后一行结束时结束线。
$1
以下是显示问题的图片:
正如您在第三行中所看到的(使用"三"文本),突出显示一直延伸到结尾,表示它也与换行符匹配。
我如何调整我的正则表达式来解释这个问题?
答案 0 :(得分:1)
将\n?移至开头:^((?:(?:\n? | *\t)+.*)*)$。
\n?
^((?:(?:\n? | *\t)+.*)*)$
在regex101上查看结果。
答案 1 :(得分:1)
这应该有效:
^((?:(?: | *\t)+.*\n?)*(?:(?: | *\t)+.*))$
regex101
答案 2 :(得分:1)
它通常是负匹配的良好正则表达模式,即捕获而不是新行:
((?:^(?:[ ]{4}|\t)(?:[^\r\n]*))+)
https://regex101.com/r/fH4mD5/5