如何解决排除“ |”来自正则表达式 正则表达式解释更新
我正在尝试排除“ |”从youtube标签列表中。
到目前为止,我可以正则表达式选择所有可爱的标签,例如下面的字符串
cute|"cute nail art"|"cute"|"cute"|"fcute"
我能够突出显示“可爱”和可爱|究竟。问题是“ |”。我如何摆脱它?
我的正则表达式查询是这个("\bcute\b")|(\bcute\b[^\s])
。
我的预期结果是突出可爱和“可爱”。
任何提示将不胜感激,感谢您的阅读。
解决方法
假设输入是一串由|
连接的标记字符串,并且某些标记括在引号中,并且您希望以某种方式标识和标记某个标记,无论其原样还是带引号,您都可以使用正则表达式看起来像这样:
(?<=\||^)(cute|"cute")(?=\||$)
在此处进行操作:https://regex101.com/r/acjM8R/3
正则表达式解释
(?<= # start a positive lookbehind assertion
^ # match the beginning of the string
| # OR
\| # match the character '|' literally (it has a special meaning when not escaped)
) # end of the lookbehind assertion
( # start a capturing group; it is also used to group the alternatives
cute # match the word 'cute' (the tag) as is
| # OR
"cute" # match the word "cute" (the tag) when it is quoted
) # end of the group
(?= # start a positive lookahead assertion
\| # match the character '|' literally (it has a special meaning when not escaped)
| # OR
$ # match the end of the string
) # end of the lookahead assertion
片段^|\|
与字符串(^
的开头或字符|
(分隔符)匹配。类似地,片段\||$
与|
(分隔符)或字符串的结尾匹配。
肯定断言是对实际上不消耗任何字符的当前匹配点之前((?<= ... )
)或之后((?= ... )
)上字符的测试。
总而言之,上面的正则表达式匹配cute
或"cute"
,但仅当它被定界符|
或字符串边界包围时。
更新
写(cute|"cute")
的另一种方式是(("?)cute\2)
。
片段("?)
捕获可选的(?
)引号("
)。其后是实际标签。片段\2
的意思是“与第二个捕获组相同” ,在这种情况下,它是与("?)
匹配的文本。
这意味着,如果("?)
与某项(引号)匹配,则\2
也必须与引号匹配。如果("?)
匹配一个空字符串(|
和cute
之间没有引号),则\2
也匹配一个空字符串。
看到它在这里工作:https://regex101.com/r/acjM8R/4/
,我假设您要使用的是文字|
。因此,您需要像\|
那样对其进行转义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。