Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式中的元素_Python_Regex - Fatal编程技术网

Python 正则表达式中的元素

Python 正则表达式中的元素,python,regex,Python,Regex,我是个新手。“*”和“+”之间有什么区别?它们似乎都尽可能地表示等于前面的元素零次或多次?+表示一次或多次,而*表示零次或多次 “*”导致结果RE匹配0或多次重复 在RE之前,尽可能多的重复。ab*将与“a”匹配, “ab”或“a”后跟任意数量的“b” “+”导致生成 RE匹配前面RE的1或更多重复。ab+将匹配 “a”后跟任何非零个“b”;它不可能只匹配 “a” *匹配0次或更多次。即使没有对手,它也是成功的。因此,a*即使在字符串bcd +匹配1次或多次。应该至少有一场比赛,然后才是成功的。

我是个新手。“*”和“+”之间有什么区别?它们似乎都尽可能地表示等于前面的元素零次或多次?

+
表示一次或多次,而
*
表示零次或多次

“*”导致结果RE匹配0或多次重复 在RE之前,尽可能多的重复。ab*将与“a”匹配, “ab”或“a”后跟任意数量的“b”

“+”导致生成 RE匹配前面RE的1或更多重复。ab+将匹配 “a”后跟任何非零个“b”;它不可能只匹配 “a”


*
匹配0次或更多次。即使没有对手,它也是成功的。因此,
a*
即使在字符串
bcd

+
匹配1次或多次。应该至少有一场比赛,然后才是成功的。如果我们使用
a+
,那么应该至少有一个
a
存在,以便成功匹配。因此,对于字符串
bcd

*
+
本质上都是贪婪的,因此在
终止或回溯之前,它们将尽可能匹配
  • +
    量词选择前面的字符
    1
    或更多次,次数尽可能多
  • *
    量词选择前面的字符
    0
    或更多次,次数尽可能多
  • 例子

    使用正则表达式(带有
    +
    ):

    使用正则表达式(带有
    *
    ):


    关于
    re
    的引用:

    • +
      -使生成的RE与前面RE的
      1
      或更多重复匹配
      ab+
      将匹配
      a
      ,后跟任何非零的
      b
      s;它不会只匹配
      a
    • *
      -使生成的RE与前面RE的
      0
      或更多重复匹配,重复次数尽可能多
      ab*
      将匹配
      a
      ab
      a
      ,后跟任意数量的
      b
      s
    help('re')
    为您提供了大量信息,包括这些信息。
    foo1bar     # Match
    foo234bar   # Match
    foobar      # Not a Match
    
    foo1bar     # Match
    foo234bar   # Match
    foobar      # Match