使用正则表达式在n行之后恰好匹配文本。
在下面的示例中,我想确保 请求 正好位于 id:1
示例:
signal {
id: 1
files: 1.bin
major: 338013710701
request {
reqId: 101
files: 1.bin
major: 35723057325
status: Sent
}
response {
resId: 201
files: 1.bin
major: 27151510570
status: Accepted
}
}
注意: n 的值会因输入而异(n的值可能高于100)。其中n是字符串出现之前的行数
我尝试使用正则表达式/signal\s*{\s*id:\s*1\n[^\n]*\n[^\n]*\s*request/m
作为上面的例子,因为n的值n是最小的。
如果n为100,任何人都可以帮助构建正则表达式吗? 提前谢谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
尝试:
\bid: 1\b(?:.*\R){3}.*request
设置不区分大小写且dot与linebreak不匹配
在上面\ R是一个unicode linebreak。在早期版本的Ruby中不支持,如果这是一个问题,请替换类似\ n或类似适合您的环境的任何换行序列。