【问题标题】:Python Regex MatchingPython 正则表达式匹配
【发布时间】:2016-07-01 01:06:36
【问题描述】:

我正在输入一个文本文件(行)(所有字符串)。我试图使 card_type 为真,以便它可以进入 if 语句,但是,它永远不会进入 IF 语句。从打印行出来的输出是:

imm48-1gb-sfp/imm48-1gb-sfp
imm-2pac-fp3/imm-2pac-fp3
imm5-10gb-xfp/imm5-10gb-xfp
sfm4-12/sfm4-12

这是代码:

    print str(card_type)            
    if card_type == re.match(r'(.*)/(.*)',line):
       card_type = card_type.group(1)

【问题讨论】:

    标签: python regex string if-statement match


    【解决方案1】:

    re.match 将返回 MatchObject 如果有匹配或 None 如果没有。以下代码将捕获/ 字符之前的部分:

    import re
    
    line = 'imm48-1gb-sfp/imm48-1gb-sfp'
    match = re.match(r'(.*?)/', line)
    if match:
        card_type = match.group(1)
        print card_type
    

    【讨论】:

    • 没错,我已将示例更改为使用非贪婪模式 .*?,这将在输入有多个 / 字符的情况下起作用。
    【解决方案2】:

    Card_type 是一个字符串。 re.match() 返回一个布尔值(true 或 false,正则表达式是否匹配字符串)。

    由于它们是不同的类型,所以它们不能相等,并且不满足 if 条件。

    【讨论】:

    猜你喜欢
    • 2013-09-22
    • 2022-12-11
    • 2015-09-14
    • 2021-12-31
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多