我有一个较短的字符串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'
我知道正则表达式会让这更容易,但我很困惑从哪里开始。
答案 0 :(得分:6)
将0
的每个实例替换为[01]
,以使其与0
或1
匹配:
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”,但是你没有说你是想匹配字符串的开头还是结束等等。直到我更好地理解你的要求,这将完成匹配。