有以下几行:
Animated.Value
我希望找到像
这样的所有行assert json.error1.code == "1"
assert json.error.code == "2"
assert json.error.code == "3"
assert json.error1.code == "4"
其中anyword可以是除错误之外的任何内容 所以在我的例子中,第一行和第四行。
我可以这样做吗?
我试过像
这样的东西assert json.[anyword].code == "3"
但是没有用,它匹配所有行,尽管我对错误词放了一个否定。
答案 0 :(得分:0)
^.*(?!error)\.code.*$
正则表达式匹配任何0+个字符,但字符串开头有换行符,然后回溯以查找未跟error
个子字符串的字符,然后是.code
substring,然后是除了换行符之外的0+个字符,直到字符串/行的末尾。
您可以使用
^(?!.*\.error\.).*\.code\s*==.*$
请参阅regex demo(与您提供的第一行和第四行相匹配)。如果字符串(行)包含(?!.*\.error\.)
子字符串,则.error.
否定前瞻将使匹配失败。
模式详情:
^
- 行/字符串的开头(取决于您是否使用MULTILINE修饰符)(?!.*\.error\.)
- 如果字符串/字符串中某处有.error.
,则表示匹配失败的否定前瞻 - 也取决于DOTALL修饰符).*
- 任何0+个字符(除了没有DOTALL修饰符的换行符)\.code
- 文字.code
子字符串\s*
- 0+ whitespaces ==
- 文字==
子字符串.*
- 任何0+个字符(除了没有DOTALL修饰符的换行符)$
- 字符串/行的结尾(取决于您是否使用MULTILINE修饰符)。答案 1 :(得分:0)
您可以使用以下正则表达式:
'assert\sjson\.(?:(?!errors).*)\.code\s+==\s+"\d"'
演示:https://regex101.com/r/jG3uK7/5
请注意,您的负面预测并不像预期的那样有效,因为您需要在.*
之前使用该负面预测并将它们放在捕获组中。