条件的正则表达式问题 - c#

时间:2016-02-25 13:56:17

标签: regex

我有以下文字,我想抓住第一行:

text-to-capture: 1|5|3|5|2|1|0|1 
do-not-capture-this text

我正在使用以下正则表达式:

text\-to\-capture:\s[^|][^\r\n]*

输出应为:

text-to-capture: 1|5|3|5|2|1|0|1

但是,有时候,第一行可能会以等号(=)打破,例如:

text-to-capture: 1|5|3|5|2|1|=
0|1
do-not-capture-this text

我有什么方法可以让一个正则表达式在两种情况下都能为我服务(单行和两行等号)?

我知道换行符的输出将是

text-to-capture: 1|5|3|5|2|1|=
0|1

提前致谢。

5 个答案:

答案 0 :(得分:0)

这个怎么样;

select MAX(date) AS mdate FROM B

符合您的第二个要求

感谢Robin Gertenbach

答案 1 :(得分:0)

text-to-capture:\s[^\r\n=]*(=\r?\n[^\r\n]+)?

匹配text-to-capture:之后的所有内容(换行符或等号除外),然后可选地匹配等号,换行符和除换行符之外的所有内容

答案 2 :(得分:0)

试试这个:

text-to-capture: (.*=\n.*|.*)

它只会捕获text-to-capture之后的所有内容,如果在行尾有=,则会捕获它并在此之后删除该行。

答案 3 :(得分:0)

使用RegexOptions.Singleline这可能适合您:

text\-to\-capture:\s.*(?:(?<!=)[\r\n])

test here

答案 4 :(得分:0)

这应该适用于:

([^\|]*[0-9\|\n\=]+)

可以找到解释copying the newly exposed methods and objects