Python 满足某些关键字后匹配值的正则表达式

Python 满足某些关键字后匹配值的正则表达式,python,regex,Python,Regex,我有一些路径用空格分隔,但没有用\s/\s分隔,即:空格、斜杠、空格 val1/val2 val4/val7关键字/somevalue aaa/bbb ccc/ddd eee/fff 第一要素:val1/val2 第二要素:val4/val7 第三个元素:关键字/somevalue 第四要素:aaa/bbb 第五要素:ccc/ddd 第六要素:eee/fff 当我找到具有somevalue的关键字时: (keyword / [^/\s]*) 上述匹配后唯一可接受的值可以是aaa/bbb和c

我有一些路径用空格分隔,但没有用\s/\s分隔,即:空格、斜杠、空格

val1/val2 val4/val7关键字/somevalue aaa/bbb ccc/ddd eee/fff

  • 第一要素:val1/val2
  • 第二要素:val4/val7
  • 第三个元素:关键字/somevalue
  • 第四要素:aaa/bbb
  • 第五要素:ccc/ddd
  • 第六要素:eee/fff
当我找到具有somevalue的关键字时:

(keyword / [^/\s]*)
上述匹配后唯一可接受的值可以是aaa/bbb和ccc/ddd,无论顺序如何,也不管重复

例如,我应该得到一个匹配的

  • val1/val2 val4/val7关键字/somevalue aaa/bbb ccc/ddd
  • val1/val2 val4/val7关键字/somevalue aaa/bbb
  • val1/val2 val4/val7关键字/somevalue ccc/ddd
  • val1/val2 val4/val7关键字/somevalue ccc/ddd aaa/bbb
  • val1/val2 val4/val7关键字/somevalue ccc/ddd aaa/bbb ccc/ddd
  • 任何其他组合都应返回unmatch,例如: 当关键字/somevalue后面有一些额外的“元素”时

  • val1/val2 val4/val7关键字/somevalue aaa/bbb ccc/ddd eee/fff
  • val1/val2 val4/val7关键字/somevalue eee/fff ccc/ddd
  • val1/val2 val4/val7关键字/somevalue aaa/bbb zzz/yyy ccc/ddd
  • (……)

    我应该去比赛

    可以用正则表达式实现吗? 我正试图用regex解决这个问题,但我卡住了。

    让我们试试下面的方法:

    其中:

    • 关键字
      是您的固定关键字
    • aaa
      bbb
      ccc
      ddd
      是需要逐字匹配的
    • aaa\/bbb
      是第一对允许的夫妇,
      ccc\/ddd
      是第二对
    • (?:|$)
      检查一对夫妇后面是空格还是行尾
      $

    我必须强调,强烈建议使用编程语言进行提取。您应该拆分字符串并检查分区。

    不,这不是我要找的。编程语言并不重要,但我添加了额外的标记编程语言,因为并非所有语言都使用相同的regex风格。因此,在一种语言中工作的模式可能无法在另一种语言中工作。这对我来说并不重要,无论如何,感谢您的努力。感谢regex,它正在工作。在这种情况下,不可能使用任何编程语言。这很神秘。在什么情况下,以下情况可能是正确的?a) 使用正则表达式解决问题,b)不使用编程语言解决问题?
    keyword \/ \w+ ((?:aaa \/ bbb|ccc \/ ddd)(?: |$))+$