用于重复字符串的python正则表达式

标签 python regex parsing

我想验证然后解析这个字符串(引号):

string = "start: c12354, c3456, 34526; other stuff that I don't care about"
//Note that some codes begin with 'c'

我想验证字符串是否以“start:”开头并以“;”结尾 之后,我想让一个正则表达式解析出字符串。我尝试了以下 python 重新代码:

regx = r"start: (c?[0-9]+,?)+;" 
reg = re.compile(regx)
matched = reg.search(string)
print ' matched.groups()', matched.groups()

我尝试了不同的变体,但我可以得到第一个或最后一个代码,但不能得到所有三个的列表。

或者我应该放弃使用正则表达式?

编辑:更新以反射(reflect)我忽略的部分问题空间并修复了字符串差异。 感谢您在这么短的时间内提出所有建议。

最佳答案

在 Python 中,这对于单个正则表达式是不可能的:组的每次捕获都会覆盖同一组的最后一次捕获(在 .NET 中,这实际上是可能的,因为引擎会区分捕获和组)。

您最简单的解决方案是首先提取start:; 之间的部分,然后使用正则表达式返回all 匹配,而不仅仅是单个匹配,使用 re.findall('c?[0-9]+', text) .

关于用于重复字符串的python正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4651870/

相关文章:

python - 如果 Python Scrapy 中的蜘蛛已经看到了 Item(),如何省略对 Item() 的处理

python - 如何在 Python 中模拟继承的协作方法

mysql - mysql中字段的正则表达式

javascript - 月份为 1 或 2 位数字的日期的正则表达式

regex - 包含一个或另一个单词的正则表达式

javascript - 大型 JSON 字符串未使用 JSON.parse 或 angular.fromJson 进行解析

Python:Tkinter 菜单条目未传递正确的值

c# - 使用未知属性名称在 JSON.NET 中解析 JSON

java - 如何根据光标位置分割线?

python - 如何使用 np.where 检查行级别的条件