Python正则表达式; 0匹配0或1

时间:2013-04-01 18:48:16

标签: python regex

我有一个较短的字符串s我正在尝试匹配较长的字符串s1. 1的匹配1,但0将匹配0或1。

例如:

s = '11111' would match s1 = '11111'

s = '11010' would match s1 = '11111' or '11011' or '11110' or '11010'

我知道正则表达式会让这更容易,但我很困惑从哪里开始。

3 个答案:

答案 0 :(得分:6)

0的每个实例替换为[01],以使其与01匹配:

s = '11010'
pattern = s.replace('0', '[01]')
regex = re.compile(pattern)

regex.match('11111')
regex.match('11011')

答案 1 :(得分:2)

在我看来,你实际上正在寻找一些算术

s = '11010'
n = int(s, 2)
for r in ('11111', '11011', '11110', '11010'):
    if int(r, 2) & n == n:
        print r, 'matches', s
    else:
        print r, 'doesnt match', s

答案 2 :(得分:1)

import re

def matches(pat, s):
    p  = re.compile(pat.replace('0', '[01]') + '$')
    return p.match(s) is not None

print matches('11111', '11111')
print matches('11111', '11011')
print matches('11010', '11111')
print matches('11010', '11011')

你说“匹配更长的字符串s1”,但是你没有说你是想匹配字符串的开头还是结束等等。直到我更好地理解你的要求,这将完成匹配。