【问题标题】:REGEX - Combining positive lookaheads with conditionals?REGEX - 将积极的前瞻与条件相结合?
【发布时间】:2018-08-16 04:22:31
【问题描述】:

这里有另一个给你!我已经摆弄了一段时间,但我迷路了。我认为实现这一点的关键可能是将条件与积极的前瞻性结合起来?

我希望始终找到字符串的开头。我在示例中将其称为"MatchMe!",但实际上它可以是任何东西。 Part 1、Part 2、Part 3 和 Part 4 总是相同的(虽然不一样,但我可以可靠地正则表达式)

有没有办法尝试使用Part 1 进行积极的前瞻,如果不存在,请尝试使用Part 2 进行积极的前瞻,如果不存在,请尝试使用Part 3 进行积极的前瞻,最后尝试与Part 4 相同?还是我把事情复杂化了

我的糟糕尝试在这里,但它让我了解了我的问题:-)

https://regex101.com/r/TvgXXB/1

再次感谢!

【问题讨论】:

  • "MatchOnlyMe!"如果你检查链接:)
  • 是的,抱歉。这是漫长的一天。 Wiktor 的正则表达式应该适合你。
  • 你关闭捕获组太早了。将其移至末尾并使用 字符串/行的开头 锚点。
  • 谢谢大家!这比我想象的要简单得多! :D 我真的需要阅读我的锚点!

标签: php regex preg-match


【解决方案1】:

你可以使用

^.*?(?=\s*(?:Part1|Part2|Part3|Part4))

见regex demo

详情

  • ^ - 字符串开头
  • .*? - 任何 0+ 字符,除了换行符,尽可能少
  • (?=\s*(?:Part1|Part2|Part3|Part4)) - 字符串中的一个位置,紧邻它的右侧,后跟
    • \s* - 0+ 个空格
    • (?:Part1|Part2|Part3|Part4) - non-capturing group 中列出的任一备选方案。

【讨论】:

    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多