【问题标题】:Regular expression to get text between square brackets including disparity?正则表达式获取方括号之间的文本,包括差异?
【发布时间】:2014-07-31 04:07:07
【问题描述】:

我需要找到一个在 C#(JavaScript 也是)中使用的正则表达式,以获取方括号组合内的文本。

我尝试了几种方法,但我放弃了,我的组合总是有一些错误,有人可以帮助我吗?

[text]

[[text]]

[[[tex]]]]]]]]]]]]]

等等……

【问题讨论】:

  • 所以你只想从开头删除[,从结尾删除]

标签: c# javascript regex


【解决方案1】:

这匹配除方括号外的所有内容:[^\[\]]+

这会捕获任意数量的开 (LHS) 和闭 (RHS) 方括号之间的任何非方括号:

\[+([^\[\]]+)\]+

Javascript 中的示例用法:

'[[[[[test]]]]'.match(/\[+([^\[\]]+)\]+/)
> ["[[[[[test]]]]", "test"]

http://regexpal.com/ 的正则表达式测试器对于尝试正则表达式很有用。

【讨论】:

    【解决方案2】:

    如果您更喜欢使用正则表达式,以下方法将起作用。

    \[([^[\]]+)\]
    

    Live Demo

    考虑替换这些字符,而不是尝试在它们之间进行匹配。

    String input  = @"[[[text]]]]]]]]]]]]]";
    String output = Regex.Replace(input, @"[[\]]", "");
    Console.WriteLine(output); //=> "text"
    

    【讨论】:

    • 为什么在没有 cmets 的情况下,几个好的答案会被否决?这是一种很好的方法,并且比正则表达式的答案更具可读性。 +1。
    • @hwnd 用户要求正则表达式,请参阅问题的第 2 个字
    • 现在 SO 中有很多投反对票的巨魔。当心!
    • 但也应该有一些原因。
    【解决方案3】:

    试试这个

    这匹配除方括号外的所有内容:

    \[([^\[\]]+)\]

    输出

    文字

    文字

    特克斯

    【讨论】:

    • @A.P.是的,但不知道为什么人们投了反对票:)
    【解决方案4】:

    这将排除方括号:

    ((?!\[)(?!\]).)+
    

    Demo

    Explanation

    【讨论】:

    • @ArijitMukherjee 有什么问题吗?
    • 只选择初始字符​​span>
    • @ArijitMukherjee 不,一切都会被选中。你看过演示吗?当然,它必须是全局匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2011-01-25
    • 2020-03-14
    • 1970-01-01
    • 2019-01-20
    相关资源
    最近更新 更多