正则表达式提取方括号或大括号之间的文本

Posted

技术标签:

【中文标题】正则表达式提取方括号或大括号之间的文本【英文标题】:Regular expression to match text between either square or curly brackets 【发布时间】:2011-01-25 02:39:26 【问题描述】:

与我的previous question 相关,我有一个格式如下的字符串:

this is a [sample] string with [some] special words. [another one]

提取方大括号内的单词的正则表达式是什么,即。

is
[sample]
[some]
special
[another one]

注意:在我的用例中,括号不能嵌套。我还想保留封闭字符,以便在处理结果时可以区分它们。

【问题讨论】:

如果字符串是blah [] blah ]怎么办? 【参考方案1】:

只需或 (|) 将您希望匹配在一起的不同事物:

\[.*?\]|\.*?\

【讨论】:

【参考方案2】:

这个似乎有效:

[[].*?[\]]

或者这个:

\[.*?\]|.*?

如果你想捕捉下面的 cmets 中提到的情况。

您可以使用在线正则表达式测试器来尝试这些事情。我认为http://gskinner.com/RegExr/ 是更人性化的选项之一。

【讨论】:

在 [ ... 的情况下会失败。 编辑删除无关的``。 @Carl,不,他说 [foo [bar]](嵌套示例)没有发生。 括号不能嵌套对我来说意味着[[]],这是正则表达式失败的经典案例。 @Carl:您可以将 [ 与 \[ 匹配。为什么使用[[]

以上是关于正则表达式提取方括号或大括号之间的文本的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式提取大括号之间的数据并加载到 AMQ

如何提取括号(圆括号)之间的文本?

用于在最后一个括号 () 之间获取文本的正则表达式

正则表达式获取方括号之间的文本,包括差异?

正则表达式拆分字符串,提取之前的字符串值和方括号之间的数值

正则表达式返回括号之间的文本