用于在模式之间提取字符串的正则表达式

时间:2013-07-04 14:24:28

标签: c# .net regex

需要一些有关正则表达式的帮助,用于在start_pattern和end_pattern之间提取字符串。此外,如果不存在end_pattern,正则表达式应该将所有字符grep到行尾。

Sample 1 : "BOOK1:book1A,book1B,book1C,book1D" 

预期结果:book1A,book1B,book1C,book1D

Sample 2 : "BOOK1:book1A,book1B,book1C,book1D|BOOK2:book2A,book2B,book2C,book2DA"

预期结果:(1)book1A,book1B,book1C,book1D (2)book2A,book2B,book2C,book2DA

当字符串终止符为“|”时,我设法解决了正则表达式(如下所示),但是当没有终结符时无法解决它

(?<=BOOK1:).*(?=\|)

1 个答案:

答案 0 :(得分:2)

使用$并将.*更改为.*?

(?<=BOOK1:|\|).*?(?=\||$)

$标记行尾或字符串

.*?会与懒惰相匹配


例如,输入

a|b|c|d|e

使用正则表达式

(?<=\|).*(?=\|)

它会匹配b|c|d

使用正则表达式

(?<=\|).*?(?=\|)

它匹配

b
c
d