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

Regex: Match everything between characters or new line

我正在尝试提出一个正则表达式来识别以下代码段中 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 条件。

提前感谢任何帮助。

预览link: http://regexr.com/3be2t

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

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

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

DEMO