正则表达式获取方括号之间的文本,包括差异?
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 不,一切都会被选中。你看过演示吗?当然,它必须是全局匹配。以上是关于正则表达式获取方括号之间的文本,包括差异?的主要内容,如果未能解决你的问题,请参考以下文章