Ruby正则表达式中递归嵌套匹配的花括号对

判断

我有以下字符串:

The {quick} brown fox {jumps {over {deep} the} {sfsdf0} lazy} dog {sdfsdf1 {sdfsdf2}

和PHP正则表达式:

/(?=\{((?:[^{}]+|\{(?1)\})+)\})/g

它产生以下匹配:

[5-10]  `quick`
[23-60] `jumps {over {deep} the} {sfsdf} lazy`
[30-45] `over {deep} the`
[36-40] `deep`
[48-54] `sfsdf0`
[76-83] `sdfsdf2`

请参阅:http : //regex101.com/r/fD3iZ2

我正在尝试在Ruby中使用等效功能,但是(?1)存在问题,导致出现undefined group option错误:

str = "The {quick} brown fox {jumps {over {deep} the} {sfsdf} lazy} dog {sdfsdf {sdfsdf}"
str.scan /(?=\{((?:[^{}]+|\{(?1)\})+)\})/

SyntaxError: undefined group option: /(?=\{((?:[^{}]+|\{(?1)\})+)\})/

请参阅:http : //fiddle.re/n6w4n

巧合的是,我在Javascript和Python中遇到了同样的错误。

我的正则表达式foo今天几乎用尽,非常感谢您的帮助。

Pietzcker团队

Ruby使用不同的递归语法:\g<1>replaces (?1)所以尝试

(?=\{((?:[^{}]++|\{\g<1>\})++)\})

我还使量词具有所有格,以避免在括号不平衡的情况下过度回溯。

irb(main):003:0> result = str.scan(/(?=\{((?:[^{}]++|\{\g<1>\})++)\})/)
=> [["quick"], ["jumps {over {deep} the} {sfsdf} lazy"], ["over {deep} the"], 
["deep"], ["sfsdf"], ["sdfsdf"]]

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式匹配双花括号嵌套

来自分类Dev

Scala:正则表达式模式与花括号匹配?

来自分类Dev

Perl在正则表达式中的花括号

来自分类Dev

Perl在正则表达式中的花括号

来自分类Dev

如何编写与嵌套括号匹配的递归正则表达式?

来自分类Dev

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

来自分类Dev

Ruby-用于匹配括号的正则表达式?

来自分类Dev

用于花括号的正则表达式数字Java中的花括号({n})

来自分类Dev

SPARQL查询中的递归正则表达式以识别匹配的括号

来自分类Dev

用于匹配 gnu r 中的括号对的递归正则表达式

来自分类Dev

正则表达式嵌套括号

来自分类Dev

在正则表达式中处理嵌套括号

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

正则表达式将不需要的花括号添加到匹配的字符串中

来自分类Dev

Python 3.4-用于匹配最里面花括号的正则表达式

来自分类Dev

存在多个花括号时如何使用正则表达式获取完全匹配的短语

来自分类Dev

Python 正则表达式:仅在花括号后面匹配字符串

来自分类Dev

正则表达式省略花括号

来自分类Dev

正则表达式在花括号周围分裂

来自分类Dev

正则表达式替换花括号内的点?

来自分类Dev

正则表达式花括号无法正常工作

来自分类Dev

双花括号的Java正则表达式模式

来自分类Dev

正则表达式忽略多余的花括号

来自分类Dev

如何使用正则表达式替换没有嵌套括号的字符串中不匹配的括号?

来自分类Dev

正则表达式嵌套匹配

Related 相关文章

  1. 1

    正则表达式匹配双花括号嵌套

  2. 2

    Scala:正则表达式模式与花括号匹配?

  3. 3

    Perl在正则表达式中的花括号

  4. 4

    Perl在正则表达式中的花括号

  5. 5

    如何编写与嵌套括号匹配的递归正则表达式?

  6. 6

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

  7. 7

    Ruby-用于匹配括号的正则表达式?

  8. 8

    用于花括号的正则表达式数字Java中的花括号({n})

  9. 9

    SPARQL查询中的递归正则表达式以识别匹配的括号

  10. 10

    用于匹配 gnu r 中的括号对的递归正则表达式

  11. 11

    正则表达式嵌套括号

  12. 12

    在正则表达式中处理嵌套括号

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

    正则表达式将不需要的花括号添加到匹配的字符串中

  19. 19

    Python 3.4-用于匹配最里面花括号的正则表达式

  20. 20

    存在多个花括号时如何使用正则表达式获取完全匹配的短语

  21. 21

    Python 正则表达式:仅在花括号后面匹配字符串

  22. 22

    正则表达式省略花括号

  23. 23

    正则表达式在花括号周围分裂

  24. 24

    正则表达式替换花括号内的点?

  25. 25

    正则表达式花括号无法正常工作

  26. 26

    双花括号的Java正则表达式模式

  27. 27

    正则表达式忽略多余的花括号

  28. 28

    如何使用正则表达式替换没有嵌套括号的字符串中不匹配的括号?

  29. 29

    正则表达式嵌套匹配

热门标签

归档