Python:正则表达式的字符串

时间:2017-11-09 17:12:09

标签: python regex

假设我有一串字符。

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

1 个答案:

答案 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}。如果它看起来不正确,请回复评论,我会更新这个答案。