我是 Python re 的新手,但我需要帮助。我在这里搜索,谷歌,文档,但没有任何效果。所以这就是我想要做的。
我有单词(例如)“字符串”然后我有单词列表:
字符串,字符串,str,ing,in,ins,rs,压力
我想匹配:string、str、ing、in、ins、rs。
我不想匹配:stress,strings(因为有2x s,而在word string中,只有1个)
对不起,英语不好,如果我解释得不够好。
是的,而且,有些字母是 unicode。
本着问题的精神,这是一个正则表达式答案。
它是 ^(?=[string]{1,6}$)(?!.*(.).*\1).*$
这将检查 1-6 个字符在string
. 后半部分确保没有重复。当然,如果您的原始 中有多个相同的字符,这种方法就会失效sstring
,并且对于长字符串并不是特别有效。
为通用输入词运行它的代码:
import re
mylist = ["strings", "string", "str", "ing", "in", "ins", "rs", "stress"]
word = "string"
r = re.compile("^(?=[%s]{1,%d}$)(?!.*(.).*\1).*$" % (word, len(word)))
print filter(r.match, mylist)
这打印:
['string', 'str', 'ing', 'in', 'ins', 'rs']
您可以在此处使用代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句