通过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);
}
ä½†æ˜¯å› ä¸ºæˆ‘è¿˜æ²¡æœ‰èƒ½å¤Ÿå¼„æ¸…æ¥šï¼†ï¼ƒ34;倒数第二个"è¦æ±‚,它åªè¿”回
Expected string length 19 but was 13. Strings differ at index 0.
Expected: " 0111\\interdum magn"
But was: "interdum magn"
-----------^
我å°è¯•åœ¨å¦å®šå—符之å‰æ·»åŠ {2}
,但没有è¿æ°”。
ä½ èƒ½å¸®æˆ‘å¼„æ¸…æ¥šå‰©ä¸‹çš„éƒ¨åˆ†å—?
谢谢: - )
ç”案 0 :(得分:4)
您å¯ä»¥ä½¿ç”¨
@"[^\\]+\\[^\\]+$"
请å‚阅regex demo
[^\\]+\\[^\\]+$
匹é…
[^\\]+
- 除\
\\
- æ–‡å—\
[^\\]+
- 除\
$
- å—符串结æŸã€‚在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选项的æ£åˆ™è¡¨è¾¾å¼æ•ˆçŽ‡ï¼š