python C 将几个正则表达式合并到一个RE中
1) Match ONLY RE1 'one or more times'
2) Match ONLY RE2 'o
我已经写了2个RE来匹配String中的多个字符串序列.例如.让我们假设两个正则表达式是RE1,RE2.字符串可以是这四种形式; 1) Match ONLY RE1 'one or more times' 2) Match ONLY RE2 'one or more times' 3) Match RE1 'one or more times' AND match RE2 'one or more times' 4) Match NEITHER RE1 NOR RE2 目前我正在使用如果检查这些,但我知道它非常昂贵,因为我正在做一个特定的字符串匹配几次.我想到使用’或’|但问题是正则表达式将停止匹配,一旦找到第一个匹配的序列,而不是继续寻找其他的.我想找到匹配的序列“一次或多次”. 更新: eg: RE1 = (d{1,3}[a-zA-Z]?/d{1,3}[a-zA-Z]?) RE2 = (babcb) String: *some string* 100/64h *some string* 120h/90 *some string* abc 200/100 abc *some string* 100h/100f Matches: '100/64h','120h/90','abc','200/100','100h/100f'如何合并这2个RE来使我的程序有效.我正在使用python来代码. 解决方法 你说“我知道它非常昂贵,因为我正在做一个特定的字符串匹配几次.”这对我来说,你正在运行每个RE几次.在这种情况下,您正在犯错误,无需编写更复杂的RE即可解决. re1_matches = re.findall(re1,text) re2_matches = re.findall(re2,text)这将导致两个匹配列表.然后,您可以对这些列表执行布尔运算,以生成您需要的任何结果;或者如果您需要一个列表中的所有匹配,您可以连接它们.您也可以使用re.match(匹配在字符串的开头匹配)或re.search(匹配字符串中的任何位置),如果您不需要列表的结果,但只需要知道有匹配. 无论如何,在这种情况下创建一个更复杂的RE可能不是必需或不可取的. 但是,我并不清楚你想要什么,所以我可能错了. 关于如何使用布尔运算符来处理列表的一些建议.首先一些设置: >>> re1 = r'(d{1,3}[a-zA-Z]?)' >>> re2 = r'(babcb)' >>> re.findall(re1,text) ['100/64h','100h/100f'] >>> re.findall(re2,text) ['abc','abc'] >>> re1_matches = re.findall(re1,text) >>> re2_matches = re.findall(re2,text) >>> rex_nomatch = re.findall('conglomeration_of_sandwiches',text)如果所有结果都为True,则返回第一个False结果或最终结果. >>> not re1_matches and re2_matches False所以如果你想要列表而不是平面布尔值,你必须测试你想要的结果最后: >>> not rex_nomatch and re1_matches ['100/64h','100h/100f']同理: >>> not rex_nomatch and re2_matches ['abc','abc']如果你只想知道两个RE都产生了匹配,但是不再需要了,你可以这样做: >>> re1_matches and re2_matches ['abc','abc']最后,如果两个RE都产生匹配,这是一个紧凑的方法来获得连接: >>> re1_matches and re2_matches and re1_matches + re2_matches ['100/64h','100h/100f','abc'](编辑:百色站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python – 在扫描文档中分割文本行
- Python Popen shell = False导致OSError:[Errno 2]没有这样
- python – 如何将Pandas列多索引名称作为列表
- 创建一个包含来自另一个字典的特定键值对的Python字典
- python C 逐行文件处理,for-loop vs with
- python – Scipy稀疏 – 距离矩阵(Scikit或Scipy)
- django – MongoEngine _types和_cls字段
- python – matplotlib – 传说在单独的子图
- python – tkinter中的标签宽度
- python – 更改matplotlib线样式中图
- python – 如果列超过特定数量的NA值,则删除该列
- python – PIL open()方法不能使用BytesIO
- python – “I; 16”图像文件的numpy.array
- python – OSError:[WinError87]参数不正确
- Python:如何在字符串中剪切超过2个相等字符的序
- python – Networkx:将多重图形转换为加权边缘的
- python – Django:使用对象作为字典键是否合理?
- python – Django – 显示ImageField
- python – matplotlib.pyplot.imshow:在使用属性
- 在Django中,如何在模板中以小写的am / pm显示时间