我正在尝试提出一个正则表达式来识别以下代码段中 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
答案 0 :(得分:0)
您可以使用行结束锚而不是\r
或\n
,并且必须删除+
之后存在的(.*?)
。使用+
,它执行贪婪匹配,捕获组必须包含空字符串。
\babc=(.*?)(?=\|\||$)
或
\babc=(.*?)(?=\|\||\r|\n)