【问题标题】:python re.match() returns true when part of the string matches当部分字符串匹配时,python re.match() 返回 true
【发布时间】:2013-10-21 10:37:33
【问题描述】:

这对于论坛中的人来说可能是微不足道的,但我最终调试了一整天。我有一个 python 脚本正在运行,但问题归结为:

import re
spice="IN_N1"
rtl="IN_N13"
re.match(spice,rtl)

这将返回一个匹配对象。 Python 似乎在第二个字符串中的任何位置匹配字符串 IN_N1 并返回一个匹配项。我希望它比较整个字符串并在这种情况下返回不匹配。换句话说,我希望上面的内容只有在 spice="IN_N13" 时才匹配。如果有人可以提出解决方案,那就太好了。 谢谢!

【问题讨论】:

  • spice==rtl?无需为此使用正则表达式。

标签: python regex string-matching


【解决方案1】:

您的 Python 正则表达式被解释为 IN_N1.*

将您的模式更改为IN_N1$,它应该可以工作。

不过考虑一下 Aleksanders 的评论 ;)

//编辑:修正正则表达式以考虑评论

【讨论】:

  • 注意他们使用的是匹配,而不是搜索,所以^是隐含的。
  • 我把它做成了 spice='^IN_N1$' 和 rtl='^IN_N1$'。在这种情况下,它说不匹配。但是,假设 ^ 是隐含的,我只是修改了 spice="IN_N1$" 和 rtl="IN_N1"。这有效 - 并返回匹配项。制作 rtl="IN_N13" 表示不匹配。因此,在最后添加 $ 是可行的。当然相等运算符也可以。谢谢!
  • 当然第一个不起作用 ;) 正则表达式中的 ^ 用于行开头, $ 用于行结尾。如果你把它放在你正在搜索的字符串中,那么这些字符是普通字符(不是正则表达式),因此正则表达式将不匹配。
猜你喜欢
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 2017-07-15
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 2013-05-23
相关资源
最近更新 更多