正则表达式,用于将4个条件与逻辑AND运算符组合

时间:2019-05-24 16:01:07

标签: regex

我需要找出一个正则表达式来测试4个字符串,以查看它们是否不存在于我的输入值中。

例如,我希望捕获其中不完全匹配/aaabbb/ccc/ddd的所有输入。

因此有效的字符串应为/dd/dddd,依此类推
无效的字符串将是/aaa/bbb/ccc/ddd

我正在使用以下正则表达式:

^((?!\/aaa)(?!\/bbb).)*$

该方法适用于上述任何2个字符串,但是如果我添加4个此类捕获组,则它将不起作用。

2 个答案:

答案 0 :(得分:2)

您可以使用具有字符类并对该组的反向引用的捕获组:

^(?!/([a-d])\1{2}$).*$

说明

  • ^字符串的开头
  • (?!负向查找,断言直接在右边的不是
    • /([a-d])\1{2}$匹配/,捕获字符类中列出的任何一个,并重复两次对该组的反向引用,并断言字符串的结尾
  • )近距离否定预测
  • .*匹配任何char 0次以上
  • $声明字符串的结尾

Regex demo

如果您不想匹配空字符串,则可以使用+而不是*作为量词。

答案 1 :(得分:1)

您可以使用位置标记is_same_v来确保下一个位置是单词的边界,并在ggplot(aes(x=grp3, y=value1, label=id, label2=value2, label3=grp)) 组中使用OR运算符\b来包含多个单词忽略:

|

假设这是用于某些命令行界面的,甚至可以通过将/移到组之外来忽略不是命令的行。

not

您可以在这里看到实际的效果,以及它会捕获和不捕获的内容:

How to choose variable to display in tooltip when using ggplotly?