RegEx仅在行首附近时才匹配

问题描述 投票:0回答:1

使用正则表达式,仅当模式不在行首附近时,我才想在其后面使用负向后匹配。这是为了匹配紧随其他文本之后的VHDL注释,而不是匹配行首附近的注释(即,除空白之前没有其他文本)。

例如,如果我的测试字符串是:

-- BOL
   test; -- C1
   test =>   -- C1
   -- BOL indent

我想要一个正则表达式字符串:

(?<!^\s*)--

仅匹配两个“ C1”前面的“-”,而忽略“ BOL”和“ BOL缩进”前面的“-”。但这需要在后面进行可变长度的查找,此正则表达式工具不支持。问题源于不知道缩进将要占用多少空间。

有更好的方法吗?

regex regex-lookarounds regex-negation
1个回答
0
投票

一种选择是从字符串的开头匹配0+个空白字符,然后至少匹配非-的非空白字符。然后在组中的字符串中进一步捕获--

^[^\S\r\n]*[^\s-].*(--)

Regex demo

© www.soinside.com 2019 - 2024. All rights reserved.