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

Posted

技术标签:

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

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

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

[text]

[[text]]

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

等等……

【问题讨论】:

所以你只想从开头删除[,从结尾删除] 【参考方案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 不,一切都会被选中。你看过演示吗?当然,它必须是全局匹配。

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

括号之间的Python正则表达式替换[重复]

正则表达式提取方括号之间的文本[重复]

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

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

两个字符串之间的正则表达式匹配,包括那些字符串

如何在嵌套括号之间获取文本?