正则表达式匹配包含在双括号中的单词
问题描述:
我正在试图找到正确的正则表达式语法,用于匹配和分割由双括号包围的单词。正则表达式匹配包含在双括号中的单词
const string originalString = "I love to [[verb]] while I [[verb]].";
我试图
var arrayOfStrings = Regex.Split(originalString,@"\[\[(.+)\]\]");
但它并没有正常工作。我不知道我做错了
我想arrayOfStrings出来,像这样
arrayOfStrings[0] = "I love to "
arrayOfStrings[1] = "[[verb]]"
arrayOfStrings[2] = " while I "
arrayOfStrings[3] = "[[verb]]"
arrayOfStrings[4] = "."
答
我认为这是你所需要的。
string input = "I love to [[verb]] while I [[verb]].";
string pattern = @"(\[\[.+?\]\])";
string[] matches = Regex.Split(input, pattern);
foreach (string match in matches)
{
Console.WriteLine(match);
}
答
将会产生你想要的东西的答案是@"(?=\[\[.*?\]\])|(?<=\]\])"
。
这有两个部分,它由|
“或”符号分开。
(?=\[\[.*?\]\])
将寻找其后面紧跟着一个[[
一些字符,以及]]
和拆分其间它与[
任何符号。
(?<=\]\])
将查找紧接在]]
之前的任何符号,并紧接在]
后面分割。
这些被称为“lookahead”和“lookbehind”,你可以找到它们的更多变体here。
这将删除括号内的词,这不是用户想要的。 – JDB 2013-02-13 20:15:30
Cyborgx37,括号不会被删除。它将返回到劳伦斯伯克所要求的。 – 2013-02-13 20:28:48
你是对的。我的错误 - 显然我误解了Regex.Split函数。不幸的是,当我尝试删除我的downvote时,我收到错误消息。 – JDB 2013-02-13 20:33:32