如何匹配模式(或字符)的第一次出现,除了该模式位于行首的行?



>我有以下示例行:

!foobar foo bar ! foo               ---> NO MATCH
foo bar foo bar !   foo             ---> Should match !
foo bar foo bar ! ! fooo bar !      ---> Should ONLY match the first ! 
! ! foo bar                         ---> NO MATCH
!foo bar foo bar ! ! fooo bar !     ---> NO MATCH

我想找到一个正则表达式,该表达式仅与字符"!"的第一次匹配,除非字符位于行首,则行除外。 我试图使用许多不同的组合(可能不正确(的负面回溯(可能不正确(无济于事,例如^(?!!)!.

我计划将此正则表达式用作需要强制正则表达式的命令的输入,因此我无法使用其他方法。

正则表达式:

^[^!]+(!).*

组 1 包含您的匹配项。

在这里测试。

请注意,此解决方案仅适用于单个字符(在本例中为!(。

最新更新