gpt4 book ai didi

java - 匹配字符之间的文本(避免嵌套)

转载 作者:行者123 更新时间:2023-12-02 10:29:45 25 4
gpt4 key购买 nike

给定:

"abc{defghij{kl}mnopqrst}uvwxyz{aaaaaaaaaa}"

我想匹配字符 { 和最后一个 } 之间的文本(不包括嵌套) - 即文本 {defghij{kl}mnopqrst}{aaaaaaaaaa}

如果没有嵌套的 {kl},正则表达式 \{[^{}]*\} 就可以正常工作。但嵌套的 {kl} 则不然。

有办法做到这一点吗?如果不可能,我可以说“匹配 { 和 } 之间的文本,其中所包含文本的大小至少为(例如 3)个字符,以便包含两个字符的嵌套 {kl} 不匹配?(我假设一个级别嵌套)

编辑:https://www.freeformatter.com/java-regex-tester.html

谢谢

最佳答案

在您的问题中,由于嵌套级别不会达到两个,因此可以使用可读的短正则表达式来解决它,这将是:

\{(?:\{[^{}]*}|[^{}]+)*}

在 Java 中,你必须像我一样转义左大括号。

上面的正则表达式匹配左大括号,然后查找除 {} 字符之外的其他字符(即 [^{}]+)或用大括号 {[^{}]*} 括起来的内容,并尽可能多地重复此模式,然后期望匹配右大括号。

参见live demo here

关于java - 匹配字符之间的文本(避免嵌套),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53679687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com