簡體   English   中英

從中提取字符串

[英]extract a string from

我有以下字符串

29  This is a Page1  6754001  1,2,3,4
6755  This is a Page2 56-0 7654564 
 This is a Page3  67543-986xx 8 12
 This is (Page5)& Container 876-0 6 8xp

從上面,我需要提取以下文本

This is a Page1 
 This is a Page2
 This is a Page3
 This is (Page5)& Container

第一個數字和文本之間始終有一個空格,因此2129和1129之間有一個空格。 有時第一個數字被省略,例如2129不見了。 文本和下一個數字之間總是有一個空格,因此這是Page1和6754001之間的空格,有時可能會有兩個空格。 我只需要提取這些行,這些行總是在空格之后開始,因此可以

29 This is page1

他們總是被一個空格,有時是一個空格,有時是兩個空格所取代。

任何幫助將不勝感激。

您可以嘗試使用以下正則表達式來獲取文本,該文本的開頭是可選數字,然后是一個或多個空格和一個數字。

正則表達式:

^(?:\d+)?\s*(.*?)\s+\d.*

替換字符串:

$1

演示

通過字符串替換,

代碼

string str = @"29  This is a Page1  6754001  1,2,3,4
6755  This is a Page2 56-0 7654564 
 This is a Page3  67543-986xx 8 12
 This is (Page5)& Container 876-0 6 8xp";
string result = Regex.Replace(str, @"(?m)^(?:\d+)?\s*(.*?)\s+\d.*", "$1");
Console.WriteLine(result);
Console.ReadLine();

輸出:

This is a Page1
This is a Page2
This is a Page3
This is (Page5)& Container

愛迪生

要么

通過Matches方法。

string str = @"29  This is a Page1  6754001  1,2,3,4
6755  This is a Page2 56-0 7654564 
 This is a Page3  67543-986xx 8 12
 This is (Page5)& Container 876-0 6 8xp";
Regex rgx = new Regex(@"(?m)^(?:\d+)?\s*(.*?)\s+\d.*");
foreach (Match m in rgx.Matches(str))
Console.WriteLine(m.Groups[1].Value);

愛迪生

^\d*.*?\s+|(?<=\s)\d{2,}.*(?=\s|$)

試試這個,這將適合您的最新需求。

http://regex101.com/r/gG5fF6/4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM