gpt4 book ai didi

regex - 带if条件的正则表达式

转载 作者:行者123 更新时间:2023-12-04 10:15:31 24 4
gpt4 key购买 nike

我是正则表达式的新手。我正在尝试构建一个正则表达式
前三个字符必须是字母,然后字符串的其余部分可以是任何字符。如果前三个字符之后的字符串部分包含 & 那么这部分应该以 " 开始和结束.
我能够构建 ^[a-z]{3} ,但停留在条件语句上。
这可以在单个表达式中完成吗?

最佳答案

在大多数正则表达式风格中,您可以使用简单的前瞻来确保某些文本存在于或不在当前位置右侧的某处,并使用替代运算符 |可以检查替代品。

所以,我们基本上有两种选择:有一个 &在前 3 个字母之后的字符串中的某个位置,或者不是。因此,我们可以使用

^[A-Za-z]{3}(?:(?=.*&)".*"|(?!.*&).*)$

regex demo

详情 :
  • ^ - 字符串开头
  • [A-Za-z]{3} - 3 个字母
  • (?:(?=.*&)".*"|(?!.*&).*) - 两种选择之一:
  • (?=.*&)".*" - 如果有 &字符串中的某处 ( (?=.*&) ) 匹配 " ,然后是任何 0+ 个字符,然后是 "
  • | - 或
  • (?!.*&).* - 如果没有 & ( (?!.*&) ) 在字符串中,只需匹配任何 0+ 个字符直到...
  • $ - 字符串的结尾。

  • 在 PCRE、.NET 或其他一些正则表达式中,您可以访问条件构造。这是一个 PCRE demo :
    ^[A-Za-z]{3}(?(?=.*&)".*"|.*)$
    ^^^^^^^^^^^^^^^^^
    (?(?=.*&)".*"|.*)方法:
  • (?(?=.*&) - 如果有 &在任何 0+ 个字符之后...
  • ".*" - 匹配 "anything here" -like字符串
  • | - 或者,如果没有 &
  • .* - 从当前位置匹配任何 0+ 个字符(即在前 3 个字母之后)。
  • 关于regex - 带if条件的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39222950/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com