正则表达式:在字符串的开头重复模式

时间:2014-06-11 15:14:40

标签: python regex pattern-matching

例如,请考虑以下字符串:"apple1: apple2: apple3: some random words here apple4:"

我想只匹配apple1,apple2和apple3,但不匹配apple4。我很难弄清楚如何归档这个。

感谢任何帮助。

感谢。

4 个答案:

答案 0 :(得分:1)

如果您使用的是.net,则可以匹配以下模式,然后使用该组的Captures属性来获取所有匹配的苹果。

(?:(apple\d).*?){3}

如果你只想匹配第一个:

apple\d

甜美而简单。只需拨打一次匹配即可。

答案 1 :(得分:1)

从您的评论中,您可能希望匹配apple后面跟着整个字符串中的数字的匹配项,除了出现apple后跟字符串末尾的数字。< / p>

>>> import re
>>> text    = 'apple1: apple2: apple3: some random words here apple4:'
>>> matches = re.findall(r'(\bapple\d+):(?!$)', text)

['apple1', 'apple2', 'apple3']

答案 2 :(得分:1)

所以,也许是这样的:

^([A-Za-z]+)[^A-Za-z]+(\1[^A-Za-z]+)+

http://regexr.com/38vvb

答案 3 :(得分:0)

对不起,伙计们,我没有正确地格式化我的问题,但它并不清楚。

我找到了解决方案:

r'\s*((apple)\d+[ \:\,]*)+'

感谢您的帮助!