[英]Regex get specific instance of string
我有可变数量的字符串,这些字符串包含在用空格分隔的行中。
CRLF之前的最后两个值始终存在,我需要使用Regex提取倒数第二个数值。
我最初尝试过(.+?[ ]{1,}){6}.+?\\r\\n
但这可能是我需要提取的第5个或第6个实例。
66666666 RCA JOBS CASH 300,080.47 0000ABCDE\r\n
66666666 RCA JOBS 182.09 VL 9,755.02 0000FGHIJ\r\n
您可以命名您的群组。 这应该起作用"(.+?[ ]{1,}){5}(?<MyFirstValue>.+?[ ]{1,})(?<MySecondValue>.*)
var regex = new Regex("(.+?[ ]{1,}){5}(?<MyFirstValue>.+?[ ]{1,})(?<MySecondValue>.*)");
var test = @"66666666 RCA JOBS CASH 300,080.47 0000ABCDE
66666666 RCA JOBS 182.09 VL 9,755.02 0000FGHIJ";
Console.WriteLine(string.Join("\n",
regex
.Matches(test)
.Cast<Match>()
.Select(m => m.Groups["MyFirstValue"].Value + " " + m.Groups["MySecondValue"].Value)));
如果要倒数第二个Word,可以使用以下RegEx:
\S+(?= \S+\r$)
它可以通过选择所有非Space字符,后接空格,某些非空格字符,行尾的“ return”来工作。
编辑:
您必须为RegEx设置multiline
选项。 编辑2:
如果只想第一行,也可以使用:
\S+(?= \S+\r)
(没有“ endofline”)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.