假设我有一串字符。
charstr = "SZR"
假设字符Z是加载的字符,可以表示S,P,Q,W或R
我想编写一个函数get_regex(charstr),它将charstr作为输入并返回正则表达式字符串。 然后可以使用它来查找其他字符串中的模式。
以下代码不应导致回答='无',因为SZR与SQSRRSWR中的SRR和SWR匹配。
charstr = "SZR"
answer = re.search(get_regex(charstr), 'SQSRRSWR')
我尝试过以下但是没有成功。有什么建议吗?
import re
def get_regex(charstr):
charstr = re.sub("Z", "[SPQWR]{1}", charstr) # Z: can be S,P,Q,W, or R
#The line directly below this was in my original post. I have commmented it out and the function now works properly.
#charstr = "\'\'\'^ " + charstr + "\'\'\'" # Results in '''^ S[SPQWR]{1}R'''
return charstr
charstr = "SZR"
answer = re.search(get_regex(charstr), 'SQSRRSWR')
print(answer) # Results in None
答案 0 :(得分:1)
你的例子似乎非常接近工作。如果我理解你想要做什么,这有效:
import re
def get_regex(charstr):
charstr = re.sub("Z", "[SPQWR]", charstr) # Z: can be S,P,Q,W, or R
return charstr
charstr = "SZR"
if re.search(get_regex(charstr), 'SQSRRSWR'):
print("yep it matched")
else:
print("nope it does not match")
charstr = "SXR"
if re.search(get_regex(charstr), 'SQSRRSWR'):
print("yep it matched")
else:
print("nope it does not match")
结果:
yep it matched
nope it does not match
这就是你想要做的事情。因为暗示,我取出了{1}。如果它看起来不正确,请回复评论,我会更新这个答案。