最佳答案
在执行一些小的正则表达式任务时,我遇到了这个问题。我有一个字符串,它是一个标签列表,例如:
foo,bar,qux,garp,wobble,thud
我需要做的是检查某个标签,例如“ garp”是否在这个列表中。(它最终匹配什么并不重要,重要的是有没有匹配。)
我的第一次尝试有点愚蠢,就是使用下面的 regex:
[^,]garp[,$]
我的想法是,在“ garp”之前,应该有行/字符串的开头或逗号,在“ garp”之后,应该有逗号或行/字符串的结尾。
现在,很明显这个 regex 是错误的: ^ 和 $都改变了它们在字符类[]上下文中的行为。
我最后想到的是:
^garp$|^garp,|,garp,|,garp$
这个正则表达式只是处理4个案件一个。(标记位于列表的开头、中间、末尾,或者作为列表的唯一元素。)最后一个 regex 在我看来有点丑,为了好玩,我想让它更优雅一些。
有没有一种方法可以在字符类的上下文中使用行开始/行结束字符(^ 和 $) ?
编辑: 好的,我们希望得到更多的信息,这里是: 我在 Oracle SQL 语句中使用它。遗憾的是,这不允许任何查看断言,但由于我只对是否有匹配(而不是匹配的内容)感兴趣,因此这并不真正影响我。 标记可以包含非字母字符,如-or _ so bgarp b 不起作用。另外,一个标记可以包含另一个标记,如 SilentGhost 所说,所以/garp/也不起作用。