我有一个要从其中提取两个字符串之间的字符串列表的字符串:['']。我尝试了一些在线发现的正则表达式规则(特别是此问题:Regular Expression to get a string between two strings in Javascript),但问题在于正确转义字符以使正则表达式正常工作。

如何提取两个字符串之间的字符串列表?我想做这样的事情:

List<string> TheListOfStrings = Regex.Matches(TheText, "....");


源是我要从中提取对象键的javascript块:对于instrance,TheObject['SomeProp'] = TheOtherObject['OtherProp'],因此列表应包含SomePropOtherProp;键可以在输入文本中多次出现。

谢谢。

最佳答案

您唯一的主要困难是使方括号被识别为定界文本,而不是正则表达式的一部分。

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

10-01 19:36
查看更多