在以下输入上使用正则表达式:
输入
response {
id: 1
files: 1.bin
major: 338013710701
status: Received
}
response {
id: 1
files: 1.bin
major: 35723057325
status: Valid
}
response {
id: 1
files: 1.bin
major: 27151510570
status: Accepted
}
我期待匹配的输出:
预期输出
response {
id: 1
files: 1.bin
major: 27151510570
status: Accepted
其中id: 1
是匹配所必需的。我尝试使用以下正则表达式执行此操作:
/response {\n {3}id: 1.*?status: Accepted/m
并从第一个response
到status: Accepted
进行选择。任何人都可以帮助构建正确的正则表达式以匹配预期的输出吗?
答案 0 :(得分:1)
您可以尝试使用以下正则表达式来匹配包含字符串status: Accepted
的响应块,
/response\s*\{\n[^\n]*\n[^\n]*\n[^\n]*\n\s*status: Accepted/m
<强>解释强>
response
匹配文字字符串响应。\s*
Zeror或更多空格。{
文字{
符号。\n
匹配换行符。[^\n]*
匹配任何字符,而不是换行符号为零或更多次。\n
匹配换行符。[^\n]*
匹配任何字符,而不是换行符号为零或更多次。\n\s*
换行符和零个或多个空格。status: Accepted
匹配字符串status: Accepted
<强>更新强>
你也可以使用这个正则表达式,
/response {[\s\n\w\.:]*id:\s*1[\s\n\w\.:]*status: Accepted/m
答案 1 :(得分:0)