匹配管道的正则表达式,它们之间没有子字符串
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,}(?=[^,|]*(?:,|$))
正则表达式引擎执行以下操作。
(?:^|,) # 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,})(?=[^,|]*(?:,|$))
感兴趣的字符串保存在每个匹配项的捕获组 1 中。
有人可以分享正则表达式以仅匹配没有子字符串的管道吗?
例如:
ABC、XYZ、|||、|||||、||G|F|、1|2、||||、R|T|Y
我只要|||和|||||和|||| selected.
在此先感谢您的帮助。
编辑:
在下面的评论中使用人们的帮助。我有一个部分有效的正则表达式 (?<=^|,\s)?(\|+)(?=,|,$)
然而,这 select 是 |在子字符串中的 F 之后 ||G|F|
是否可以将此正则表达式修改为仅 select 逗号之间没有字符串的竖线?
您还没有提供您正在使用的语言。如果它像 PCRE (PHP) 和其他一样支持 \K,则提取与以下正则表达式匹配的子字符串。
(?:^|,)[^,|]*\K\|{2,}(?=[^,|]*(?:,|$))
正则表达式引擎执行以下操作。
(?:^|,) # 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,})(?=[^,|]*(?:,|$))
感兴趣的字符串保存在每个匹配项的捕获组 1 中。