正则表达式帮助 - 以两种可能的方式结束的命名捕获组

时间:2018-04-12 22:30:08

标签: regex

我试图抓住一个有各种形式的小组。

  1. fc rgb
  2. cardType=A&Return=True
  3. cardType=AbC321
  4. 我现在的正则表达式是:

    Return=False&cardType=C

    这当前捕获了2和3,但不是1,因为在这种情况下它也捕获cardType=(?<Card Type>.*)&?

    如果我改为:

    Return

    然后它正确捕获1,但不捕获2和3.

    如何在所有3种情况下编写捕获它的正则表达式?

1 个答案:

答案 0 :(得分:0)

使用:

cardType=(?<CardType>[^&\s]*)

Demo

两个重要的变化:

  • 删除了空间表单组名称
  • .*)&?替换为[^&\s]*)

第二个变化更为重要。如果你这样做。*&amp ;?,则永远不会捕获&?,因为.*会带有&个符号。在大多数情况下,最好通过将接受的字符范围限制为[^&\s]来限制重复 - 除了空格或符号外的任何内容