我有这样的文字:
const {
b {
description "Create B1"
uri "ms:///a/v1/create-b"
}
c {
description "Create C1"
uri "ms:///a/v1/create-c"
}
d {
description "Create D1"
uri "ms:///a/v1/create-d"
}
}
const {
b {
description "Create B2"
uri "ms:///a/v1/create-b"
}
c {
description "Create C2"
uri "ms:///a/v1/create-c"
}
d {
description "Create D2"
uri "ms:///a/v1/create-d"
}
}
我正在尝试使所有内容在const
之间,而这是我到目前为止想出的:const {(?s)(.*)}.*?(?=const)
。那只是我第一次出现,我不知道如何获取所有其他对象(在原始文件中,有更多const
对象)。
欢迎朝正确的方向前进be
您可以在此处进行测试的链接:https://regex101.com/r/I4W5cR/1
答案 0 :(得分:1)
您可以利用以下事实:每次比赛在行首都以const
开头:
(?sm)^const {(.*?)}\s*\R(?=const|\Z)
请参见regex demo
详细信息
(?sm)
-s
启用DOTALL模式,而m
使^
匹配行的起始位置^
-行开始const {
-子字符串(.*?)
-第1组:任何零个或多个字符,尽可能少}
-一个}
字符\s*\R
-零个或多个空格,然后换行(?=const|\Z)
-在右边,必须有const
或字符串结尾。