簡體   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