正则表达式 - 在多次出现的分隔符之间匹配每个项目

时间:2016-06-11 03:28:03

标签: python regex

我想在Python中使用Regex表达式匹配给定分隔符之间的值。我希望这可以忽略周围的空白区域。例如:

  • 字符串<li><a href="{{ url_for('about', name=name) }}">About</a></li> 和分隔符1, b cc, "a"将返回,1b cc

  • 的三个匹配项
  • 字符串"a"和分隔符4 + 5 + 2 +1将返回+452的四个匹配项

2 个答案:

答案 0 :(得分:2)

import re
line = '1, b cc, "a"'
re.split(r'[;,]\s*', line)
Out[7]: ['1', 'b cc', '"a"']

line = '4 +   5 +   2  +1'
re.split(r'\s*[+]\s*', line)
Out[10]: ['4', '5', '2', '1']

re.split()函数很有用,因为您可以为分隔符指定多个模式。

在这种情况下,对于您的第一个请求,分隔符为comma (,)semicolon (;),后跟任意数量的额外whitespace。对于第二个请求,分隔符为plus (+),由任意数量的额外whitespaces包围。

每当找到该模式时,整个匹配就成为匹配任一侧的任何字段之间的分隔符。结果是字段列表,与str.split()

一样

答案 1 :(得分:2)

您可以使用re.split()方法执行此操作。

import re

re.split('\s*,\s*', '1, b cc, "a"')

re.split('\s*\+\s*', '4 +   5 +   2  +1')