如果我写这个正则表达式(?<=^[\t ]*@).+
我只能匹配以可选空格(但不是换行符)和at符号开头的行,而不匹配at符号。
实施例:
@test
匹配&#34;测试&#34;,但不是&#34; @&#34;
我试图匹配线,它首先不是空格字符不是at符号。为此,我否定了后视,导致:(?<!^[\t ]*@).+
。
但它匹配行,即使它们的第一个非空格字符是at符号。
我尝试过这样的正则表达式:
^[\t ]*[^@].*
,
(?<=^[\t ]*[^@]).+
,
(?<=^[\t ]*)(.(?!@)).*
。
所有这些都匹配线,即使它们的第一个非空格字符是at符号。
如何匹配不以可选空格(不是换行符)和at符号开头的行?
matches
matches
m@tches
m@tches
@Doesn't match
@Doesn't match
谢谢!
答案 0 :(得分:1)
你的模式很好,除了两件事:
所以,如果你逐行阅读文本:
^(?![ \t]*@).+
如果您阅读整篇文章,则需要使用多行修饰符使^
与行的开头匹配(默认情况下不匹配字符串的开头):
(?m)^(?![ \t]*@).+
(或另一种打开此m修饰符的方法)