我的例子是用貪婪工作,當我用來捕獲一個字符串和一個組的整個值(在組[1]中)與一對單引號。未能從正則表達式組獲得特定文本
但是,當我想捕捉的字符串的整個值和一組(在組[1] ONLY)與多對單引號的封裝,它只能捕獲字符串的值與最後一對包圍但不是第一個和最後一個單引號之間的字符串。
string val1 = "Content:abc'23'asad";
string val2 = "Content:'Scale['#13212']'ta";
Match match1 = Regex.Match(val1, @".*'(.*)'.*");
Match match2 = Regex.Match(val2, @".*'(.*)'.*");
if (match1.Success)
{
string value1 = match1.Value;
string GroupValue1 = match1.Groups[1].Value;
Console.WriteLine(value1);
Console.WriteLine(GroupValue1);
string value2 = match2.Value;
string GroupValue2 = match2.Groups[1].Value;
Console.WriteLine(value2);
Console.WriteLine(GroupValue2);
Console.ReadLine();
// using greedy For val1 i am getting perfect value for-
// value1--->Content:abc'23'asad
// GroupValue1--->23
// BUT using greedy For val2 i am getting the string elcosed by last single quote-
// value2--->Content:'Scale['#13212']'ta
// GroupValue2---> ]
// But i want GroupValue2--->Scale['#13212']
}
儘管在Regex中有這種嵌套的東西在技術上是可行的,但它聽起來像你實際需要的是解析器。 – Abion47
如果你需要用正則表達式或任何解析器來解決它,你需要定義'''被認爲是分隔符的位置,以及部分子串匹配的位置。否則,沒有解決方案。爲什麼你知道'Scale ['#13212']'應該在組1中?此外,請嘗試'[^'] *'((?:'[^'] *'| [^'])*)'。*' –
這太貪心了.. [''(。*)''] (https://regex101.com/r/ZkuERX/1) – Slai