在python正则表达式中,为什么(h)*和(h)+不能产生相同的结果?

汤姆

我正在学习repython中模块。我发现了一些对我而言毫无意义的东西,我也不知道为什么。这是一个小例子,

x=re.compile(r'(ha)*')
c=x.search('the man know how to hahahaha')
print(c.group())#output will be nothing,no error.But i expect "hahahaha"

如果我使用re.compile(r'(ha)?')也会发生同样的情况

x=re.compile(r'(ha)?')
c=x.search('the man know how to hahahaha')
print(c.group())#output will be nothing,no error.But i expect "ha". 

但是,如果使用re.compile(r'(ha)+')

x=re.compile(r'(ha)+')
c=x.search('the man know how to hahahaha')
print(c.group())#output will be `hahahaha`,just as expected.

这是为什么,都没有re.compile(r'(ha)*')re.compile(r'(ha)+')在这种情况下一样吗?

帕特里克·阿特纳

模式r'h+'r'h*'不相同,这就是为什么它们不提供相同结果的原因。+表示您的模式有1个或多个匹配项,*零个或多个匹配项

re.search返回“ nothing”,因为它只看第一场比赛。一个匹配项*'(ha)'模式在字符串的第一个字母处出现零

import re
x=re.compile(r'(ha)*')
c=x.findall('the man know how to hahahaha')   # get _all_ matches
print(c) 

输出:

['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'ha', '']

# t   h  e        m   a   n       k   n   o   w      h    o   w       t   o      hahahaha 

*?量词允许0个匹配项

组织:

Pattern.search(string [,pos [,endpos]])
扫描字符串以查找该正则表达式产生匹配项第一个位置,...
(来源:https : //docs.python.org/3/library/ re.html#re.Pattern.search

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式 - 为什么这两个表达式不会产生相同的结果?

来自分类Dev

为什么不能解决。QP和Portfolio.optim产生相同的结果?

来自分类Dev

为什么CSS文件不能产生相同的结果,这取决于它们是存储在Web上还是本地存储?

来自分类Dev

TRUNCATE和DELETE会产生相同的结果吗?

来自分类Dev

CryptoJS和openssl_decrypt不会产生相同的结果

来自分类Dev

我的python随机数产生相同的结果

来自分类Dev

正则表达式-为什么此正则表达式不能在Python中工作?

来自分类Dev

为什么使用[与[[]有时会产生相同的结果(而不是不同的结果)?

来自分类Dev

为什么不同JS对象中的my方法会产生相同的结果?

来自分类Dev

在Python正则表达式中,为什么我不能多次匹配0或更多

来自分类Dev

为什么这两个python正则表达式产生不同的结果?

来自分类Dev

为什么这两个代码片段会产生相同的结果?

来自分类Dev

为什么这些操作不会产生相同的结果?管道进入。(点)

来自分类Dev

为什么这两个代码片段会产生相同的结果?

来自分类Dev

Java中的同步-新的ReentrantLock(true)和新的ReentrantLock(false)产生相同的结果吗?

来自分类Dev

在python3中使用SHA1散列不会产生相同的结果

来自分类Dev

d3.json()和JSON.parse()会产生相同的结果吗?

来自分类Dev

在形态学打开和闭合产生相同结果的情况下?

来自分类Dev

GZip在macOS和Linux上无法产生相同的压缩结果

来自分类Dev

可以替换SQL中的文字并为PostgreSQL中的SQL EXPLAIN计划产生相同的结果

来自分类Dev

每次Java中的手动列表改组都会产生相同的结果

来自分类Dev

日期数学在 R 与 Redshift 中不会产生相同的结果

来自分类Dev

R中的ls()产生相同的输出

来自分类Dev

为什么正则表达式不能正常工作?

来自分类Dev

Python-新手:为什么这个简单的if-elif(C case块的复制)总是产生相同的结果?

来自分类Dev

尝试使用 python 计算 EMA,但我无法弄清楚为什么我的代码总是产生相同的结果

来自分类Dev

为什么我的正则表达式不能在c ++中工作,但可以在Python中工作?

来自分类Dev

为什么jQuery正则表达式产生奇怪的结果

来自分类Dev

为什么在`(?!^)`和`(?<!^)`上产生相同的答案?

Related 相关文章

  1. 1

    正则表达式 - 为什么这两个表达式不会产生相同的结果?

  2. 2

    为什么不能解决。QP和Portfolio.optim产生相同的结果?

  3. 3

    为什么CSS文件不能产生相同的结果,这取决于它们是存储在Web上还是本地存储?

  4. 4

    TRUNCATE和DELETE会产生相同的结果吗?

  5. 5

    CryptoJS和openssl_decrypt不会产生相同的结果

  6. 6

    我的python随机数产生相同的结果

  7. 7

    正则表达式-为什么此正则表达式不能在Python中工作?

  8. 8

    为什么使用[与[[]有时会产生相同的结果(而不是不同的结果)?

  9. 9

    为什么不同JS对象中的my方法会产生相同的结果?

  10. 10

    在Python正则表达式中,为什么我不能多次匹配0或更多

  11. 11

    为什么这两个python正则表达式产生不同的结果?

  12. 12

    为什么这两个代码片段会产生相同的结果?

  13. 13

    为什么这些操作不会产生相同的结果?管道进入。(点)

  14. 14

    为什么这两个代码片段会产生相同的结果?

  15. 15

    Java中的同步-新的ReentrantLock(true)和新的ReentrantLock(false)产生相同的结果吗?

  16. 16

    在python3中使用SHA1散列不会产生相同的结果

  17. 17

    d3.json()和JSON.parse()会产生相同的结果吗?

  18. 18

    在形态学打开和闭合产生相同结果的情况下?

  19. 19

    GZip在macOS和Linux上无法产生相同的压缩结果

  20. 20

    可以替换SQL中的文字并为PostgreSQL中的SQL EXPLAIN计划产生相同的结果

  21. 21

    每次Java中的手动列表改组都会产生相同的结果

  22. 22

    日期数学在 R 与 Redshift 中不会产生相同的结果

  23. 23

    R中的ls()产生相同的输出

  24. 24

    为什么正则表达式不能正常工作?

  25. 25

    Python-新手:为什么这个简单的if-elif(C case块的复制)总是产生相同的结果?

  26. 26

    尝试使用 python 计算 EMA,但我无法弄清楚为什么我的代码总是产生相同的结果

  27. 27

    为什么我的正则表达式不能在c ++中工作,但可以在Python中工作?

  28. 28

    为什么jQuery正则表达式产生奇怪的结果

  29. 29

    为什么在`(?!^)`和`(?<!^)`上产生相同的答案?

热门标签

归档