有没有办法可以使用正则表达式查找不同顺序的字符? 例如: 假设我有这个字符串:
string="I want to find JKD:Jdj:SL? and YK:kd?"
是否有可用于查找YK:kd?
和JKD:Jdj:SL?
的正则表达式
现在我只知道如何通过像
YK:kd?
re.findall('\w+\:\w+\?',string)
但我不知道如何找到只包含它们的表达式:在一般意义上它们,排除顺序和数量。
答案 0 :(得分:2)
添加一个可选的(至少一个)前导XXX:
个字符串:
re.findall(r'((?:\w+:)+\w+\?)', string)
代码测试结果:
>>> re.findall(r'((?:\w+:)+\w+\?)', "I want to find JKD:Jdj:SL? and YK:kd?")
输出:
['JKD:Jdj:SL?', 'YK:kd?']
答案 1 :(得分:1)
使用
re.findall(r'\w+(?::\w+)+\?',string)
详细
\w+
- 一个或多个单词字符(?::\w+)+
- 一个或多个冒号后跟一个或多个单词字符(注意使用(?:...)
非捕获组,允许re.findall
只返回整个匹配项< / LI>
\?
- 问号。