Regexp搜索相似的行和不同的词
有以下几行:Regexp搜索相似的行和不同的词,regex,Regex,有以下几行: assert json.error1.code == "1" assert json.error.code == "2" assert json.error.code == "3" assert json.error1.code == "4" 我想找到所有像这样的线 assert json.[anyword].code == "3" 任何单词都可以是除了错误以外的任何东西 在我的例子中,第一行和第四行 嗨,我能那样做吗 我试过类似的东西 ^.*(?!error)\.co
assert json.error1.code == "1"
assert json.error.code == "2"
assert json.error.code == "3"
assert json.error1.code == "4"
我想找到所有像这样的线
assert json.[anyword].code == "3"
任何单词都可以是除了错误以外的任何东西
在我的例子中,第一行和第四行
嗨,我能那样做吗
我试过类似的东西
^.*(?!error)\.code.*$
但不起作用,它匹配所有行,尽管我在错误字上加了一个否定。The^..*(!error)\.code.*$
regex匹配任何0+字符,但在字符串开头有一个换行符,然后回溯找到一个不跟error
子字符串的字符,然后是.code
子字符串,然后是0+个字符(换行符除外),直到字符串/行的结尾
你可以用
^(?!.*\.error\.).*\.code\s*==.*$
请参阅(匹配您提供的第一行和第四行)。如果字符串(行)包含.error.
子字符串,则(?!.\.error\)
负前瞻将使匹配失败
图案细节:
-行/字符串的开头(取决于是否使用多行修饰符)^
-如果存在(?!.\.error\)
行/字符串中的某个位置-还取决于DOTALL修饰符).error,则会导致匹配失败的负前瞻。
-任何0个以上的字符(不带DOTALL修饰符的换行符除外)*
-文本\.code
子字符串.code
-0+空格\s*
-文本=
子字符串=
-任何0个以上的字符(不带DOTALL修饰符的换行符除外)*
-字符串/行的结尾(取决于是否使用多行修饰符)$
error
子字符串的字符,然后是.code
子字符串,然后是0+字符,而不是换行符,直到字符串/行的结尾
你可以用
^(?!.*\.error\.).*\.code\s*==.*$
请参阅(匹配您提供的第一行和第四行)。如果字符串(行)包含.error.
子字符串,则(?!.\.error\)
负前瞻将使匹配失败
图案细节:
-行/字符串的开头(取决于是否使用多行修饰符)^
-如果存在(?!.\.error\)
行/字符串中的某个位置-还取决于DOTALL修饰符).error,则会导致匹配失败的负前瞻。
-任何0个以上的字符(不带DOTALL修饰符的换行符除外)*
-文本\.code
子字符串.code
-0+空格\s*
-文本=
子字符串=
-任何0个以上的字符(不带DOTALL修饰符的换行符除外)*
-字符串/行的结尾(取决于是否使用多行修饰符)$
'assert\sjson\.(?:(?!errors).*)\.code\s+==\s+"\d"'
演示:
请注意,您的负前瞻性并没有像您预期的那样工作,因为您需要在
*
前面加上负前瞻性,并将它们放在捕获组中。您可以使用以下正则表达式:
'assert\sjson\.(?:(?!errors).*)\.code\s+==\s+"\d"'
演示:
请注意,您的消极前瞻并没有像您预期的那样工作,因为您需要在*
之前添加消极前瞻,并将它们放在捕获组中