python中的部分字符串匹配

时间:2014-04-02 09:17:24

标签: python regex string

我有一个部分ID A00-A09。像A01A01.01A02A09.09之类的任何内容都应如此 根据本节ID分类。我怎么能用Python做到这一点?目前我只能将字符串与确切字符匹配。

4 个答案:

答案 0 :(得分:1)

您可以将[]与re模块一起使用:

re.findall('A0[0-9].0[0-9]|A0[0-9]','A01')

输出:

['A01']

不发生:

re.findall('A0[0-9].0[0-9]|A0[0-9]','A11')

输出:

[]

答案 1 :(得分:1)

使用re.match()进行检查。这是一个例子:

import re

section_id = "A01.09"
if re.match("^A0[0-9](\.0[0-9])?$", section_id):
    print "yes"

此处正则表达式A0X是强制性的,.0X是可选的。 X来自0-9

答案 2 :(得分:0)

剪切节ID并比较:

sid = "A00-A09"

def under_sid(ssid, sid):
    sid_start, sid_end = sid.split("-")
    return ssid[:3] >= sid_start and ssid[:3] <= sid_end

for i in ["A01", "A01.01", "A02", "A09.09"]:
    assert under_sid(i, sid)

for i in ["B01", "A22.01", "A93", "A19.09"]:
    assert not under_sid(i, sid)

答案 3 :(得分:0)

您可以使用startswith()endswith()进行部分匹配。假设完整ID始终位于X12.Y34中 - 每个部分都是一个字母和两个数字,以.-(或任何字符)分隔:

>>> id = 'A03.A07'
>>> section_id = id[:3]
>>> section_id 
'A03'
>>> id.startswith('A03')
True
>>> id.startswith('A07')
False  # so won't match with the subsection.
>>> sub_section_id = id[-3:]
>>> sub_section_id 
'A07'

如果输入有时可以是小写,则可以将其转换为uppercase