正则表达å¼ç”¨äºŽåœ¨å€’数第二个åæ–œæ ä¹‹åŽåŒ¹é…所有内容

时间:2015-11-25 12:47:18

标签: c# regex

通过this post我找到了一ç§åœ¨æ–œçº¿åŽèŽ·å–字符串最åŽä¸€éƒ¨åˆ†çš„方法。

我需è¦ç¨å¾®ä¿®æ”¹ä¸€ä¸‹ï¼š

我å¯ä»¥ä½¿ç”¨åŒ¹é…"在倒数第二个åæ–œæ ä¹‹åŽçš„所有内容的正则表达å¼ï¼ƒ34;。

我é‡å†™åŽŸæ–‡ä»¥ä½¿ç”¨åæ–œæ ï¼š

([^\\]+$)

我制作了这段代ç å¹¶è¿›è¡Œäº†æµ‹è¯•

public static string TrimTrail(this string value, string pattern)
{
    var regEx = new Regex(pattern);
    var result = regEx.Match(value);
    return result.Value;
}

[Test]
public void TestOfTrimmingTrail()
{
    //Arrange
    var stringToTest = @"0001 Lorem ipsum dolor sit\011 tortor neque\ 0111\interdum magn";
    var pattern = @"([^\\]+$)";
    //Act
    var result = stringToTest.TrimTrail(pattern);
    //Assert
    Assert.AreEqual(" 0111\\interdum magn", result);
}

但是因为我还没有能够弄清楚"倒数第二个"è¦æ±‚,它åªè¿”回

  Expected string length 19 but was 13. Strings differ at index 0.
  Expected: " 0111\\interdum magn"
  But was:  "interdum magn"
  -----------^

我å°è¯•åœ¨å¦å®šå­—符之å‰æ·»åŠ {2},但没有è¿æ°”。 你能帮我弄清楚剩下的部分å—?

谢谢: - )

1 个答案:

答案 0 :(得分:4)

您å¯ä»¥ä½¿ç”¨

@"[^\\]+\\[^\\]+$"

请å‚阅regex demo

[^\\]+\\[^\\]+$匹é…

  • [^\\]+ - 除\
  • 以外的1个或多个符å·
  • \\ - 文字\
  • [^\\]+ - 除\
  • 以外的1个或多个符å·
  • $ - 字符串结æŸã€‚

在C#中,最åŽåŒ¹é…æŸäº›å­å­—符串的更有效方法是使用RegexOptions.RightToLeft修饰符。使用它å¯ä»¥æ高此正则表达å¼æœç´¢çš„效率。

C# demo:

var line = @"0001 Lorem ipsum dolor sit\011 tortor neque\ 0111\interdum magn";
var pattern = @"[^\\]+\\[^\\]+$";
var result = Regex.Match(line, pattern, RegexOptions.RightToLeft);
if (result.Success)
    Console.WriteLine(result.Value); // => " 0111\interdum magn"

åªéœ€æ¯”较regexhero.net处有和没有RTL选项的正则表达å¼æ•ˆçŽ‡ï¼š

enter image description here