正则表达式-匹配

如何确定给定的字符序列是否与我的正则匹配, 完全地? 例如,在Java中,我可以做, pattern.compile(regex).matcher(输入).matches()() 这将返回真/错误,无论输入是否与正则匹配 完全地. Python有比赛吗?

# 回答1

ABCD写道: 真的 在模块SRE中的功能匹配: 匹配(模式,字符串,标志= 0) 尝试在字符串开始时应用模式,返回 匹配对象,或者没有找到匹配项. 有关更多信息,请参见http://docs.python.org/lib/module-re.html -tkc
# 回答2

是的,我看到了....猜想我相信我的正则是准确的:) .... b/c我不应该有一个匹配项,但我发现 它必须是正则.
# 回答3

ABCD写道: 是的. 这就是称为匹配,在RE模块中 (http://docs.python.org/lib/module-re.html) python的re.match()从字符串的开头匹配,因此,如果您 想要确保整个字符串完全匹配,您可能会 想要用" $"字符结束您的re模式(取决于什么 您的其余图案匹配.) hth, 〜西蒙
# 回答4

ABCD在2006年7月21日星期五上午10:57写道: http://kodos.sourceforge.net/ 使Regex生成和调试变得更加容易. - - James Oakley jftherics.ca
# 回答5

西蒙·福尔曼(Simon Forman)写道: 那是必要的吗? 我以为Match()用于匹配 完整的re and string,如果它们不一样,它们将不匹配 (这意味着不需要字符串字符的开始/结尾). 那是错的吗?
# 回答6

约翰·萨勒诺(John Salerno)写道: 那是必要的吗? 我以为Match()用于匹配 完整的re and string,如果它们不一样,它们将不匹配 (这意味着不需要字符串字符的开始/结尾). 那是错的吗? 那是错误的. 在这种情况下,匹配只是意味着您到达了 图案. 但是,如果您不想将" $"添加到结尾 模式,您可以检查 m.endpos == len(s) 其中m是匹配对象,s是主题字符串. 问候 史蒂夫 - - 史蒂夫·霍顿+44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype:Holdenweb http://holdenweb.blogspot.com 最近的漫步http://del.icio.us/steve.holden
# 回答7

约翰·萨勒诺(John Salerno)写道: 那是必要的吗? 我以为Match()用于匹配 完整的re and string,如果它们不一样,它们将不匹配 (这意味着不需要字符串字符的开始/结尾). 那是错的吗? 我的理解,从文档和昏暗的使用记忆中 re.match()很久以前,它将在少于完整输入的情况下匹配 字符串如果RE模式允许它(例如,如果图案 *没有*以'.*'或类似的东西结束.) 不过,在信任它之前,我会对此进行测试. 到底是什么,我现在要做: <_sre.sre_match对象在0xB6FF8790> 'ab' 没有任何 是的! 那是 案子. 和平, 〜西蒙
# 回答8

西蒙·福尔曼(Simon Forman)写道: 那是必要的吗? 我当时认为Match()用于匹配thefull re and string,如果它们不一样,它们将不匹配(这意味着不需要字符串字符的开始/结尾). 那是错的吗? 我的理解,从文档和昏暗的使用记忆中 re.match()很久以前,它将在少于完整输入的情况下匹配 字符串如果RE模式允许它(例如,如果图案 *没有*以'.*'或类似的东西结束.) 不过,在信任它之前,我会对此进行测试. 到底是什么,我现在要做: <_sre.sre_match对象在0xB6FF8790> 'ab' 没有任何 是的! 就是这样. 和平, 〜西蒙 多谢你们!
# 回答9

约翰·萨勒诺(John Salerno)写道: 荣幸. :)
# 回答10

约翰·马奇(John Machin)在2006年7月22日上午9:25写道: 抱歉,如果这两次出现...邮寄到新闻组尚未显示 向上; 尝试邮件列表. (1)每个Regex库的Match()从一开始就开始匹配 字符串(除非有明确的启动 位置) - 还要从哪里开始? (2)这与"匹配整个字符串或 不是"问题. *否* ...如果要确保整个字符串完全匹配, 您需要用" \ z", *不 *" $"来结束图案. 手册的细胞似乎已被指示:-) 是的. 如果默认值匹配整个字符串,则是一个metacharacter 需要发出信号"*不*匹配整个字符串" ... 功能非常有用. 用'.*'或类似的东西结束模式通常是一个错误 除了浪费CPU周期外,什么也没做: c:\ junk> python -mtimeit -s"导入 re; s ='a'+80*'z'; m = re.compile('a').匹配" m(s)" 1000000循环,最佳3:1.12 USEC每循环 c:\ junk> python -mtimeit -s"导入 re; s ='a'+8000*'z'; m = re.compile('a').匹配" m(s)" 100000循环,最佳3:1.15 USEC每循环 c:\ junk> python -mtimeit -s"导入 re; s ='a'+80*'z'; m = re.compile('a.*').匹配" m(s)" 100000循环,最佳3:1.39 USEC每循环 c:\ junk> python -mtimeit -s"导入 re; s ='a'+8000*'z'; m = re.compile('a.*').匹配" m(s)" 10000循环,最佳3:24.2 USEC每循环 正则发动机无法将其优化,因为"". 默认情况下 "除了新线之外的任何角色",因此必须一路陷入困境 最后,以防万一有一个新线潜伏在某处. 哦,以防万一你想知道: c:\ junk> python -mtimeit -s"导入 re; s ='a'+8000*'z'; m = re.compile('a.*',re.dotall).ma tch""" m(s)" 1000000循环,最佳3:1.18 USEC每循环 在这种情况下,逻辑说".*"将与任何东西匹配,因此可以停止 立即地. <_sre.sre_match对象在0xB6FF8790> ??? _.group()怎么了??? 'ab' 没有任何 hth, 约翰
# 回答11

西蒙·福曼(Simon Forman)在2006年7月22日上午2:18写道: (1)每个Regex库的Match()从一开始就开始匹配 字符串(除非有明确的启动 位置) - 还要从哪里开始? (2) 这与"匹配整个字符串或 不是"问题. *否* ...如果要确保整个字符串完全匹配, 您需要用" \ z", *不 *" $"来结束图案. 手册的细胞似乎已被指示:-) 是的. 如果默认值匹配整个字符串,则是一个metacharacter 需要发出信号"*不*匹配整个字符串" ... 功能非常有用. 用'.*'或类似的东西结束模式通常是一个错误 除了浪费CPU周期外,什么也没做: c:\ junk> python -mtimeit -s"导入 re; s ='a'+80*'z'; m = re.compile('a').匹配" m(s)" 1000000循环,最佳3:1.12 USEC每循环 c:\ junk> python -mtimeit -s"导入 re; s ='a'+8000*'z'; m = re.compile('a').匹配" m(s)" 100000循环,最佳3:1.15 USEC每循环 c:\ junk> python -mtimeit -s"导入 re; s ='a'+80*'z'; m = re.compile('a.*').匹配" m(s)" 100000循环,最佳3:1.39 USEC每循环 c:\ junk> python -mtimeit -s"导入 re; s ='a'+8000*'z'; m = re.compile('a.*').匹配" m(s)" 10000循环,最佳3:24.2 USEC每循环 正则发动机无法将其优化,因为"". 默认情况下 "除了新线之外的任何角色",因此必须一路陷入困境 最后,以防万一有一个新线潜伏在某处. 哦,以防万一你想知道: c:\ junk> python -mtimeit -s"导入 re; s ='a'+8000*'z'; m = re.compile('a.*',re.dotall).ma tch""" m(s)" 1000000循环,最佳3:1.18 USEC每循环 在这种情况下,逻辑说".*"将与任何东西匹配,因此可以停止 立即地. <_sre.sre_match对象在0xB6FF8790> ??? _.group()怎么了??? 'ab' 没有任何 hth, 约翰

标签: python

添加新评论