常规表达式:re.match不起作用,但re.search起作用

时间:2019-02-09 10:55:09

标签: python regex

我正在Linux上使用python 2.7。 我准备了一个正则表达式,应该检测到一个字符串 格式如下:

tcp:IP_ADDR:PORT-IP_ADDR:PORT 要么 udp:IP_ADDR:PORT-IP_ADDR:PORT

我有以下用于正则表达式的简短脚本:

import re
my_str="tcp:192.168.0.1:111-10.0.0.2:22"
regx_ip = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
regx_hostfwd = r'["tcp" | "udp"]?:%s?:\d+-%s?:\d+' % (regx_ip, regx_ip)
if not re.match(regx_hostfwd, my_str):  
    print("fail")
else:
    print("success!")

当我运行它时,我得到:“失败” 但是,当我将其更改为使用re.search时,因此: ...

my_str="tcp:192.168.0.1:111-10.0.0.2:22"
regx_ip = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
regx_hostfwd = r'["tcp" | "udp"]?:%s?:\d+-%s?:\d+' % (regx_ip, regx_ip)
if not re.search(regx_hostfwd, my_str): 
    print("fail")
else:
    print("success!")   

...

运行它,我得到“成功!”。 我不明白这是什么原因。 根据我的理解,比赛从一开始就看起来 输入,而搜索将查找输入中的任何位置。根据我的理解,在这种情况下,这两种情况都应该返回成功。 我应该怎么做才能在使用“匹配”时返回成功?

关于, 凯文

0 个答案:

没有答案