2011-04-03 142 views
8

我想寫一個正則表達式額外的值,它後面的單詞'總',但我不知道如何處理回車這意味着我在2個單獨的行搜索。有誰知道解決這個問題的最好方法嗎?正則表達式與回車

Taxes&Charges↵ 
↵ 
£ 35.97↵ 
↵ 
Total↵ 
£ 198.98↵ 
↵ 
£ 35.97↵ 
↵ 
↵ 
Total↵ 
£ 333.98 
+2

你正在使用哪種正則表達式? – kennytm 2011-04-03 22:18:30

+0

這完全取決於你如何讓你的文本進入應用程序 - 例如一次一行或整個文件中的字符串值。此外,它取決於你使用的語言 - 雖然大多數正則表達式實現多少有相同的選項來處理多行,但調用它們的方式是不同的。 – LHMathies 2011-04-03 22:20:00

+0

你是什麼意思「額外的價值」? – intuited 2011-04-03 22:22:09

回答

0

添加s修改到你的正則表達式。 s表示將字符串視爲單行。爲什麼不先用str_replace刪除回車?糟糕,沒有PHP標籤。

6

在正則表達式,你應該使用\r趕上回車和\r\n搭上換行符

0

如果加s,以表示單行,就可以(例如,如果Windows)的使用

^Total\r\n£([ 0-9.]+)\r\n"來提取總值。

(未測試,括號應該確保它顯示爲一組值)

3

您應該使用正則表達式選項點匹配換行符(如果支持的話)。

例如在.NET你可以使用RegexOptions.Singleline這個。它指定單線模式。更改點的含義(.),使其匹配每個字符(而不是除\n之外的每個字符)。

下一個表達式:

Regex ex = new Regex(@"(?<=Total\r\n)£\s?[\d.]+", RegexOptions.Singleline); 

將匹配從測試例子£ 198.98£ 333.98值。