【问题标题】: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 {]}怎么办?

标签: regex


【解决方案1】:

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

\[.*?\]|\{.*?\}

【讨论】:

    【解决方案2】:

    这个似乎有效:

    [[{].*?[}\]]
    

    或者这个:

    \[.*?\]|{.*?}
    

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

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

    【讨论】:

    • 在 [ ... } 的情况下会失败。
    • 编辑删除无关的``。
    • @Carl,不,他说 [{foo} [bar]](嵌套示例)没有发生。
    • 括号不能嵌套对我来说意味着[[]],这是正则表达式失败的经典案例。
    • @Carl:您可以将 [ 与 \[ 匹配。为什么使用[[]
    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    相关资源
    最近更新 更多