正则表达式匹配行不以符号开头
RegExp match lines NOT starting with at-symbol
如果我写这个正则表达式 (?<=^[\t ]*@).+
我只能匹配以可选的 spaces(但不是换行符)和 at 符号开头的行,而不匹配 at 符号。
示例:
@test
匹配 "test",但不匹配“@”。
我正在尝试匹配首先不是 space 字符不是 at 符号的行。为此,我否定了后视,结果是:(?<!^[\t ]*@).+
.
但它匹配行,即使它们的第一个非space字符是 at 符号。
我试过像这样的正则表达式:
^[\t ]*[^@].*
,
(?<=^[\t ]*[^@]).+
,
(?<=^[\t ]*)(.(?!@)).*
。
所有 then 匹配行,即使它们的第一个非 space 字符是 at 符号。
如何匹配不以可选 spaces(不是换行符)和 at 符号开头的行?
matches
matches
m@tches
m@tches
@Doesn't match
@Doesn't match
谢谢!
你的模式很好,除了两点:
- 你需要先行(后跟),而不是后行
- 您需要在行首锚定您的模式
因此,如果您逐行阅读文本:
^(?![ \t]*@).+
如果您阅读整篇文本,您需要使用多行修饰符使 ^
匹配行的开头(默认情况下不是字符串的开头):
(?m)^(?![ \t]*@).+
(或打开此 m 修饰符的其他方式)
如果我写这个正则表达式 (?<=^[\t ]*@).+
我只能匹配以可选的 spaces(但不是换行符)和 at 符号开头的行,而不匹配 at 符号。
示例:
@test
匹配 "test",但不匹配“@”。
我正在尝试匹配首先不是 space 字符不是 at 符号的行。为此,我否定了后视,结果是:(?<!^[\t ]*@).+
.
但它匹配行,即使它们的第一个非space字符是 at 符号。
我试过像这样的正则表达式:
^[\t ]*[^@].*
,
(?<=^[\t ]*[^@]).+
,
(?<=^[\t ]*)(.(?!@)).*
。
所有 then 匹配行,即使它们的第一个非 space 字符是 at 符号。
如何匹配不以可选 spaces(不是换行符)和 at 符号开头的行?
matches
matches
m@tches
m@tches
@Doesn't match
@Doesn't match
谢谢!
你的模式很好,除了两点:
- 你需要先行(后跟),而不是后行
- 您需要在行首锚定您的模式
因此,如果您逐行阅读文本:
^(?![ \t]*@).+
如果您阅读整篇文本,您需要使用多行修饰符使 ^
匹配行的开头(默认情况下不是字符串的开头):
(?m)^(?![ \t]*@).+
(或打开此 m 修饰符的其他方式)