带回车的正则表达式

时间:2011-04-03 22:14:57

标签: regex

我正在尝试编写一个正则表达式来追加“Total”后面的值,但我不知道如何处理回车,这意味着我正在搜索2个单独的行。有谁知道最好的方法来解决这个问题?

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

4 个答案:

答案 0 :(得分:9)

在正则表达式中,您应该使用\r来捕获回车符,并使用\r\n来捕捉换行符

答案 1 :(得分:3)

您应该使用正则表达式选项点匹配换行符(如果支持)。

E.g。在.NET中,您可以使用RegexOptions.Singleline。它指定单行模式。更改点(.)的含义,使其匹配每个字符(而不是除\n之外的每个字符。)

下一个表达式:

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

将匹配测试示例中的£ 198.98£ 333.98值。

答案 2 :(得分:1)

s修饰符添加到正则表达式中。 s表示将字符串视为单行。为什么不先用str_replace删除回车?糟糕,没有PHP标签。

答案 3 :(得分:0)

如果添加s,表示单行,则可以(例如,如果窗口)使用

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

(未经测试,括号应确保其显示为组值)