英文:
Capture groups recursively with regex between braces
问题
如何编写一个正则表达式来捕获这些结构的每个组?
尝试了这个,但只是捕获了全部内容 (.*{.*}$)
想要为每个结构都有一个组,以便可以单独提取每个结构
(NewRequest\s*\{.*?\})|(NewResponse\s*\{.*?\})
完整的结构:
(NewRequest\s*\{.*?\})|(NewResponse\s*\{.*?\})
请注意,这是一个正则表达式,用于匹配文本中的模式。你可以使用编程语言中的正则表达式函数来提取每个匹配的组。
英文:
How to write a regex, that capture every group of these structures?
Tried this, but this just captures everything (.*{.*}$)
Want to have a group for each so that I can extract each one individually
NewRequest {
string id = 1;
string name = 2;
}
NewResponse {
int64 id = 1;
string name = 2;
}
Complete structure:
NewRequest {
string id = 1;
string name = 2;
}
NewResponse {
int64 id = 1;
string name = 2;
}
NewResponse {
int64 id = 1;
string name = 2;
}
NewResponse {
int64 id = 1;
string name = 2;
}
NewResponse {
int64 id = 1;
string name = 2;
}
答案1
得分: 1
你可以使用以下正则表达式进行匹配:
(?s)\w+\s*\{.*?}
\w+\s*\{[^{}]*}
详细解释如下:
(?s)
- DOTALL 修饰符,表示匹配任意字符,包括换行符。\w+
- 一个或多个单词字符。\s*
- 零个或多个空白字符。\{
- 匹配{
字符。.*?
- 匹配任意字符,尽可能少的匹配。}
- 匹配}
字符。
你可以参考正则表达式演示进行测试。
英文:
You can use
(?s)\w+\s*\{.*?}
\w+\s*\{[^{}]*}
See the regex demo.
Details:
(?s)
- a DOTALL modifier\w+
- one or more word chars\s*
- zero or more whitespaces\{
- a{
char.*?
- any zero or more chars as few as possible}
- a}
char.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论