繁体   English   中英

正则表达式获取字符串的特定实例

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM