【问题标题】:re.match accept any return value except for emptyre.match 接受除空之外的任何返回值
【发布时间】:2012-11-23 21:10:12
【问题描述】:

我目前正在尝试使用 python 中的 re.match 函数。然后我有一个 if 语句,如果 re.match 返回任何内容(表明正则表达式包含在字符串中),那么它将返回原始字符串的内容。否则,如果它失败,我想返回“失败”这个词。

我怎么能做到这一点?

简短形式:if 语句如何接受任何非非返回值。

【问题讨论】:

  • 您在寻找if re.match(...) is None吗? re.match 如果正则表达式不匹配,则返回 None。
  • 这听起来不像是好的设计。您的返回值有两个不同的角色。我会返回一个标记成功或失败的布尔值,以及另一个用于额外数据的字符串。
  • 我不知道不存在,谢谢。关于设计,它与我描述的不完全一样,但我试图简化我的问题,以便我能得到一个快速的答案。谢谢。

标签: python regex


【解决方案1】:
def func(s):
    pattern = "somepattern"
    return s if re.match(pattern, s) else 'failed'

另外,返回 "failed" 听起来是个坏主意。如果输入是"failed" 怎么办?考虑使用 None 之类的东西。

【讨论】:

  • 无论匹配是否为空字符串,这两个示例都是等效的,因为 re.match() 返回 None 或 Match 对象(不是字符串)。
【解决方案2】:

你可以使用真实性:

if re.match(r'your_regex', your_string):
    return your_string
else:
    return 'failed'

如果re.match 返回任何不是假的([]{}()0''NoneFalseetc.),那么它被评估为True

【讨论】:

猜你喜欢
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
相关资源
最近更新 更多