假设我有以下列表:
a = ['35','years','opened','7,000','churches','rev.','mr.','brandt','said','adding','denomination','national','goal','one','church','every','10,000','persons']
我想删除所有元素,包括数字和以点结尾的元素。
所以我想删除'35','7,000','10,000','mr.','rev.'
我可以使用以下正则表达式单独执行此操作:
regex = re.compile('[a-zA-Z\.]')
regex2 = re.compile('[0-9]')
但当我尝试合并它们时,我要么删除所有元素,要么什么也不删除。 如何正确组合两个正则表达式
您可以使用:
见a demo on regex101.com
这应该起作用:
reg = re.compile('[a-zA-Z]+\.|[0-9,]+')
请注意,您的第一个正则表达式是错误的,因为它删除了其中一个点内的任何字符串。 为了避免这种情况,我在组合正则表达式中包含了
[a-zA-Z]+\.
。 您的第二个正则表达式也是错误的,因为它遗漏了一个“+”和一个“,”,这是我在上面的解决方案中包含的。 这里是demo此外,如果假设以点结尾的元素可能包含一些数字,则完整的解决方案应为:
reg = re.compile('[a-zA-Z0-9]+\.|[0-9,]+')
如果您不需要捕获结果,那么这将匹配任何结尾带有点的字符串,或者任何结尾带有数字的字符串
相关问题 更多 >
编程相关推荐