从字符串结尾开始直到特殊字符c#

时间:2015-09-14 14:56:26

标签: c# regex string

这可能是一个非常简单的问题,但我似乎无法弄明白。你知道如何在' /'之后提取部分。在一个字符串中。所以对于以下内容:

[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]

所以我只想要' OrderConfirmation_SynergyWorldInc'一部分。我得到了271个条目,我只需要提取结尾部分(如果有帮助的话,所有部分之前都有部分)。

谢谢!

5 个答案:

答案 0 :(得分:4)

如果您有一次入境......

在进行一些修剪后,您需要将LastIndexOfSubstring一起使用:

var s = @"[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]";
s = s.Trim('[',']');
Console.Write(s.Substring(s.LastIndexOf('\\') + 1));

结果:OrderConfirmation_SynergyWorldInc

如果您有多个记录......

您可以使用正则表达式从包含[...]子字符串的大型文本中提取多个匹配项:

[^\\\[\]]+(?=\])

请参阅demo

对于[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc][SOMEENTRY]字符串,您将获得2个结果:

enter image description here

正则表达式匹配

  • [^\\\[\]]+ - 除][\
  • 以外的1个或多个字符
  • (?=\]) - 在结束]字符之前。

C#:

var results = Regex.Matches(s, @"[^\\\[\]]+(?=\])").OfType<Match>().Select(p => p.Value).ToList();

答案 1 :(得分:0)

尝试:

string orderConfirmation = yourString.Split(new []{'\\\'}).Last();

如果括号包含在字符串中,您可能还想删除最后一个字符。

答案 2 :(得分:0)

var s = @"[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]";
Console.WriteLine (s.Trim(']').Split('\\').Last());

打印

OrderConfirmation_SynergyWorldInc

答案 3 :(得分:0)

var key = @"[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]";

             key = key.Replace("[", string.Empty);
             key = key.Replace("]", string.Empty);
             var splitkeys =key.Split('\\');

            if (splitkeys.Any())
            {
                string result = splitkeys.Last();
            }

答案 4 :(得分:-3)

string pattern = ".*\\(\w*)";
string value = "[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]"
Regex r = new Regex(pattern);
Match m = r.Match(value);