>>> def findString(inputStr, targetStr):
... if convertToStringSoup(targetStr).find(convertToStringSoup(inputStr)) != -1:
... return True
... return False
...
>>> def convertToStringSoup(testStr):
... testStr = testStr.lower()
... testStr = testStr.replace(" ", "")
... testStr = testStr.replace("(", "")
... testStr = testStr.replace(")", "")
... return testStr
...
>>>
>>> findString("hello", "hello")
True
>>> findString("hello", "hello1")
True
>>> findString("hello", "hell!o1")
False
>>> findString("hello", "hell( o)1")
True
应该根据您的规范工作。显然,可以优化。你在问我正在努力思考的正则表达式,并希望很快用一些好的东西来编辑这个问题。但是,如果这不是太慢,那么正则表达式可能会很糟糕,而且可读性通常更好!
我注意到你反复寻找同一个大干草堆。显然,您只需将其转换为“字符串汤”一次!
编辑:我一直在考虑正则表达式,你所做的任何正则表达式要么需要有很多子句,要么必须像我在这个答案中所做的那样在正则表达式之前修改文本。我没有对 string.find() 与 re.find() 进行基准测试,但我想在这种情况下前者会更快。