我正在尝试创建一个表达式,该表达式对字符串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")
这是结果: 是 没有 是 没有 是的
我正在尝试获得: 是 是 是 没有 否
答案 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")