Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regexp搜索相似的行和不同的词_Regex - Fatal编程技术网

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\)
    -如果存在
    .error,则会导致匹配失败的负前瞻。
    行/字符串中的某个位置-还取决于DOTALL修饰符)
  • *
    -任何0个以上的字符(不带DOTALL修饰符的换行符除外)
  • \.code
    -文本
    .code
    子字符串
  • \s*
    -0+空格
  • =
    -文本
    =
    子字符串
  • *
    -任何0个以上的字符(不带DOTALL修饰符的换行符除外)
  • $
    -字符串/行的结尾(取决于是否使用多行修饰符)
正则表达式匹配任何0+字符,但在字符串开头有一个换行符,然后回溯以查找未后跟
error
子字符串的字符,然后是
.code
子字符串,然后是0+字符,而不是换行符,直到字符串/行的结尾

你可以用

^(?!.*\.error\.).*\.code\s*==.*$
请参阅(匹配您提供的第一行和第四行)。如果字符串(行)包含
.error.
子字符串,则
(?!.\.error\)
负前瞻将使匹配失败

图案细节

  • ^
    -行/字符串的开头(取决于是否使用多行修饰符)
  • (?!.\.error\)
    -如果存在
    .error,则会导致匹配失败的负前瞻。
    行/字符串中的某个位置-还取决于DOTALL修饰符)
  • *
    -任何0个以上的字符(不带DOTALL修饰符的换行符除外)
  • \.code
    -文本
    .code
    子字符串
  • \s*
    -0+空格
  • =
    -文本
    =
    子字符串
  • *
    -任何0个以上的字符(不带DOTALL修饰符的换行符除外)
  • $
    -字符串/行的结尾(取决于是否使用多行修饰符)

您可以使用以下正则表达式:

'assert\sjson\.(?:(?!errors).*)\.code\s+==\s+"\d"'
演示:


请注意,您的负前瞻性并没有像您预期的那样工作,因为您需要在
*
前面加上负前瞻性,并将它们放在捕获组中。

您可以使用以下正则表达式:

'assert\sjson\.(?:(?!errors).*)\.code\s+==\s+"\d"'
演示:

请注意,您的消极前瞻并没有像您预期的那样工作,因为您需要在
*
之前添加消极前瞻,并将它们放在捕获组中