正则表达式:匹配字符之间的所有内容或新行

时间:2015-07-21 01:05:13

标签: regex regex-lookarounds

我正在尝试提出一个正则表达式来识别以下代码段中 abc = 123456 | 123456 的实例:

xyz=abcdef|abcdef||abc=123456|123456||cat=dog|dog||foo=bar|bar||
xyz=abcdef|abcdef||abc=123456|123456
xyz=abcdef|abcdef||abc=123456|123456||
abc=123456|123456||xyz=abcdef|abcdef||

这里的要求是匹配字符串可以有一个尾随的双重管道,或者它不能拥有它。

我目前正在使用这个:

/abc=(.*?)+((?=\|\|)|(?=\r|\n))/

但这似乎打破了比赛结束的OR条件。

提前感谢任何帮助。

预览链接: http://regexr.com/3be2t

1 个答案:

答案 0 :(得分:0)

您可以使用行结束锚而不是\r\n,并且必须删除+之后存在的(.*?)。使用+,它执行贪婪匹配,捕获组必须包含空字符串。

\babc=(.*?)(?=\|\||$)

\babc=(.*?)(?=\|\||\r|\n)

DEMO