用于匹配“ A not(B)C'的正则表达式-不包括中间匹配项

时间:2018-07-20 21:27:46

标签: regex

我要匹配'|| C \ n'在以下字符串中:

|| A || B || C \n

使用正则表达式,例如'\ | \ | not(\ | \ |)。*?\ n',这样所有'||'除了最后一个除外。

这是怎么做到的?

1 个答案:

答案 0 :(得分:0)

您不能只寻找2条,然后确保没有其他双条。
首先必须防止出现三重杠 |||

\|\|(?!\|)[^|]*(?:\|(?!\|)[^|]*)*$

可读版本

 \|\|                          # Double bar
 (?! \| )                      # Cannot be a third bar
 [^|]*                         # Optional non-bars
 (?:                           # Cluster
      \|                            # Bar
      (?! \| )                      # if not followed by bar
      [^|]*                         # Optional non-bars
 )*                            # End, optionally 0 to many times
 $                             # EOS