Python中带字符串的正则表达式

时间:2018-10-02 19:27:46

标签: python regex string

我正在尝试创建一个表达式,该表达式对字符串6,7,8的输出为yes,对9和10的输出为no。 任何建议将不胜感激!

#The regular expression is ' ^<[^<>]*>$ '
    print ( 'The regular expression used for 5 strings was "^<[^<>]*>$"' )
    string6 = '<an xml tag>'
    string7 =  '<an xml tag>, </closetag>'
    string8 = '<with attribute="77">'
    string9 = '<opentag><closetag>'
    string10 = '</closetag>'

    if re.search( r'^<[^<>]*,>$',string6 ) :
        print( "yes" )
    else:
        print("no")
    if re.search( r'^<[^<>]*,>$',string7 ) :
        print( "yes" )
    else:
        print("no")

    if re.search(r'^<[^<>]*>$',string8):
        print("yes")

    else:
        print("no")

    if re.search(r'^<[^<>]*>$',string9):
        print("yes")

    else:
        print("no")

    if re.search(r'^<[^<>]*>$',string10):
        print("yes")

    else:
        print("no")

这是结果: 是 没有 是 没有 是的

我正在尝试获得: 是 是 是 没有 否

2 个答案:

答案 0 :(得分:1)

如果您只需要匹配那些特定的字符串,则只需在正则表达式中交替使用文字即可。

regex = r'^(?:<an xml tag>|<an xml tag>, </closetag>|<with attribute="77">)$';
for s in [string6, string7, string8, string9, string10]:
    if (re.search(regex, s)):
        print("yes")
    else:
        print("no")

从这个问题尚不清楚,可以使用哪种更通用的模式。

答案 1 :(得分:1)

前3个字符串中至少有一个空格字符,而后2个则没有。如果您使用的正则表达式只是一个空格字符,它将与前三个而不是后两个匹配。

string6 = '<an xml tag>'
string7 =  '<an xml tag>, </closetag>'
string8 = '<with attribute="77">'
string9 = '<opentag><closetag>'
string10 = '</closetag>'

if re.search( r' ',string6 ) :
    print( "yes" )
else:
    print("no")
if re.search( r' ',string7 ) :
    print( "yes" )
else:
    print("no")

if re.search(r' ',string8):
    print("yes")

else:
    print("no")

if re.search(r' ',string9):
    print("yes")

else:
    print("no")

if re.search(r' ',string10):
    print("yes")

else:
    print("no")