正则表达式匹配多行括号中的文本

我有以下文字:

node [
    id 2
    label "node 2"
    thisIsASampleAttribute 43
]
node [
    id 3
    label "node 3"
    thisIsASampleAttribute 44
]

我想将每个节点及其内容分组在方括号内,例如:

    node [
    id 2
    label "node 2"
    thisIsASampleAttribute 43
]

但是,我用下面的代码将整个文本分组:

Pattern p = Pattern.compile("node \\[\n(.*|\n)*?\\]", Pattern.MULTILINE);

Matcher m = p.matcher(text);

while(m.find())
{
    System.out.println(m.group());
}

编辑文字:

    node [\n" +
"       id 2\n" +
"       label \"node 2\"\n" +
"       thisIsASampleAttribute 43\n" +
"   ]\n" +
"   node [\n" +
"       id 3\n" +
"       label \"node 3\"\n" +
"       thisIsASampleAttribute 44\n" +
"   ]\n"
乔什·克罗齐耶(Josh Crozier)

问题是您只捕获了最后一个字符(.*|\n)*?(因为.?它不在捕获组中)。

您可以将捕获组更改为非捕获组,然后将其*?与捕获组一起包装,以捕获所有匹配项((?:.*?|\n)*?)

这里的例子

Pattern p = Pattern.compile("node \\[\\n((?:.*?|\\n)*?)\\]", Pattern.MULTILINE);
Matcher m = p.matcher(text);
while(m.find())
{
    System.out.println(m.group(1));
}

但是,上述正则表达式效率相对较低。可能更好的方法是将非]字符与否定的字符集匹配([^\]]*)

这里的例子

Pattern p = Pattern.compile("node \\[\\n([^\\]]*)\\]", Pattern.MULTILINE);
Matcher m = p.matcher(text);
while(m.find())
{
    System.out.println(m.group(1));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式匹配大括号中的文本并打印整个大括号

来自分类Dev

什么正则表达式可以将括号中的文本与嵌套括号匹配

来自分类Dev

正则表达式以匹配括号中的文本和可选文本

来自分类Dev

正则表达式以匹配括号中的文本和可选文本

来自分类Dev

“)”匹配括号的正则表达式

来自分类Dev

正则表达式与=匹配的括号

来自分类Dev

正则表达式匹配多行

来自分类Dev

正则表达式多行匹配

来自分类Dev

正则表达式用于Python中的匹配括号

来自分类Dev

无法匹配正则表达式组中的括号

来自分类Dev

正则表达式-匹配括号内引号中的文本

来自分类Dev

Python中的正则表达式-多行匹配

来自分类Dev

MariaDB / Mediawiki中的多行正则表达式匹配

来自分类Dev

在 Python 中匹配多行正则表达式模式

来自分类Dev

正则表达式匹配单行文本,但是不匹配多行文本吗?

来自分类Dev

括号中的正则表达式

来自分类Dev

正则表达式中的括号

来自分类Dev

正则表达式-在双大括号之间匹配多行内容

来自分类Dev

正则表达式-文本匹配

来自分类Dev

在正则表达式中查找匹配的文本

来自分类Dev

正则表达式以匹配括号和JavaScript括号

来自分类Dev

正则表达式匹配括号和大括号

来自分类Dev

正则表达式,用于匹配文本,后跟文本,直到匹配的括号(匹配的左括号)为止

来自分类Dev

PHP-正则表达式在其他正则表达式中匹配大括号

来自分类Dev

正则表达式匹配空间不在括号,称赞或方括号中

来自分类Dev

正则表达式以匹配括号或括号内的字符串中的数字

来自分类Dev

C#正则表达式,用于匹配嵌套括号内的分隔文本

来自分类Dev

正则表达式匹配除尾括号外的所有文本与数字

来自分类Dev

C#正则表达式,用于匹配嵌套括号内的分隔文本

Related 相关文章

  1. 1

    正则表达式匹配大括号中的文本并打印整个大括号

  2. 2

    什么正则表达式可以将括号中的文本与嵌套括号匹配

  3. 3

    正则表达式以匹配括号中的文本和可选文本

  4. 4

    正则表达式以匹配括号中的文本和可选文本

  5. 5

    “)”匹配括号的正则表达式

  6. 6

    正则表达式与=匹配的括号

  7. 7

    正则表达式匹配多行

  8. 8

    正则表达式多行匹配

  9. 9

    正则表达式用于Python中的匹配括号

  10. 10

    无法匹配正则表达式组中的括号

  11. 11

    正则表达式-匹配括号内引号中的文本

  12. 12

    Python中的正则表达式-多行匹配

  13. 13

    MariaDB / Mediawiki中的多行正则表达式匹配

  14. 14

    在 Python 中匹配多行正则表达式模式

  15. 15

    正则表达式匹配单行文本,但是不匹配多行文本吗?

  16. 16

    括号中的正则表达式

  17. 17

    正则表达式中的括号

  18. 18

    正则表达式-在双大括号之间匹配多行内容

  19. 19

    正则表达式-文本匹配

  20. 20

    在正则表达式中查找匹配的文本

  21. 21

    正则表达式以匹配括号和JavaScript括号

  22. 22

    正则表达式匹配括号和大括号

  23. 23

    正则表达式,用于匹配文本,后跟文本,直到匹配的括号(匹配的左括号)为止

  24. 24

    PHP-正则表达式在其他正则表达式中匹配大括号

  25. 25

    正则表达式匹配空间不在括号,称赞或方括号中

  26. 26

    正则表达式以匹配括号或括号内的字符串中的数字

  27. 27

    C#正则表达式,用于匹配嵌套括号内的分隔文本

  28. 28

    正则表达式匹配除尾括号外的所有文本与数字

  29. 29

    C#正则表达式,用于匹配嵌套括号内的分隔文本

热门标签

归档