目标字符串:
来到城堡[马里奥],我已经烤好了 你[蛋糕]
我想匹配最后一个括号的内容,忽略其他括号,即
一块蛋糕
我有点卡住了,有人能提供答案吗?
答案 0 :(得分:2)
试试这个,使用负向前看断言
\[[^\[]*\](?!\[)$
答案 1 :(得分:1)
这应该这样做:
\[([^[\]]*)][^[]*(?:\[[^\]]*)?$
\[([^[\]]*)]
匹配任何不包含[…]
或[
的{{1}}序列; ]
匹配任何不是[^[]*
的后续字符(即另一个潜在的[
组的开头); […]
匹配未跟随结束(?:\[[^\]]*)?$
的潜在单[
。答案 2 :(得分:0)
你可以使用某种预测。而且因为我们不知道必须处理哪些文本/字符的确切性质,它可能看起来像这样,但它需要一些工作:
\[[a-z\s]*\](?!.*\[([a-z\s]*)\])
您的内容应匹配\ 1,或可能\ 2。
答案 3 :(得分:0)
简单是最好的:.*\[(.*?)]
会做你想做的事;使用嵌套括号,它将返回最后一个,最里面的一个并忽略错误的嵌套。不需要负字符类:.*?
确保您在匹配中没有任何右括号,并且由于.*
确保您在最后可能的位置匹配,因此它也会保留任何“外部”左括号。