匹配管道的正则表达式,它们之间没有子字符串

Regular expression to match pipes with no sub-string between them

有人可以分享正则表达式以仅匹配没有子字符串的管道吗?

例如:

ABC、XYZ、|||、|||||、||G|F|、1|2、||||、R|T|Y

我只要|||和|||||和|||| selected.

在此先感谢您的帮助。

编辑:

在下面的评论中使用人们的帮助。我有一个部分有效的正则表达式 (?<=^|,\s)?(\|+)(?=,|,$)

然而,这 select 是 |在子字符串中的 F 之后 ||G|F|

是否可以将此正则表达式修改为仅 select 逗号之间没有字符串的竖线?

您还没有提供您正在使用的语言。如果它像 PCRE (PHP) 和其他一样支持 \K,则提取与以下正则表达式匹配的子字符串。

(?:^|,)[^,|]*\K\|{2,}(?=[^,|]*(?:,|$))

Demo

正则表达式引擎执行以下操作。

(?:^|,)     # match start of string or ',' in a non-capture group
[^,|]*      # match 0+ chars other than ',' and '|'
\K          # forget everything matched so far
\|{2,}      # match 2+ '|'  
(?=
  [^,|]*    # match 0+ chars other than ',' and '|'
  (?:,|$)   # match a comma or the end of the string 
)           # end non-capture group 

摘自演示 link,“\K 重置报告匹配的起点。”

如果您希望在逗号之间匹配单个管道(例如,,1|2,),请将 {2,} 更改为 +

如果不支持 \K 但可以使用捕获组,则可以使用以下正则表达式。

(?:^|,)[^,|]*(\|{2,})(?=[^,|]*(?:,|$))

Demo

感兴趣的字符串保存在每个匹配项的捕获组 1 中。