繁体   English   中英

什么是正则表达式匹配双括号包含的单词

[英]What would be the Regex to match a word wrapped in double brackets

我试图找到正确的正则表达式语法,用于匹配和拆分由双括号包围的单词。

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);
}

能够产生你想要的答案的答案是@"(?=\\[\\[.*?\\]\\])|(?<=\\]\\])"

它有两个部分,由|分隔 “或”符号。

(?=\\[\\[.*?\\]\\])将查找紧跟着[[ some characters,and a ]]任何符号,并在它和[ 。之间进行拆分。

(?<=\\]\\])将寻找其立即被前面任何符号]]和刚分割后]

这些被称为“lookahead”和“lookbehind”,你可以在这里找到它们的更多变体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM