我有一个要从其中提取两个字符串之间的字符串列表的字符串:['
和']
。我尝试了一些在线发现的正则表达式规则(特别是此问题:Regular Expression to get a string between two strings in Javascript),但问题在于正确转义字符以使正则表达式正常工作。
如何提取两个字符串之间的字符串列表?我想做这样的事情:
List<string> TheListOfStrings = Regex.Matches(TheText, "....");
源是我要从中提取对象键的javascript块:对于instrance,
TheObject['SomeProp'] = TheOtherObject['OtherProp']
,因此列表应包含SomeProp
和OtherProp
;键可以在输入文本中多次出现。谢谢。
最佳答案
您唯一的主要困难是使方括号被识别为定界文本,而不是正则表达式的一部分。
string input = "a['bc']d['ef']gh']";
MatchCollection matches = Regex.Matches(input, @"\['(?<key>.*?)'\]");
var listOfKeys = matches.Cast<Match>().Select(x => x.Groups["key"].Value);
绝招。
如果性能很重要并且要多次运行,那么编译正则表达式将获得明显的胜利:
string input = "a['bc']d['ef']gh']";
Regex re = new Regex(@"\['(?<key>.*?)'\]", RegexOptions.Compiled);
MatchCollection matches = re.Matches(input);
var listOfKeys = matches.Cast<Match>().Select(x => x.Groups["key"].Value);