我正试图从网页上直到第二次出现单词matchdate
。
(.*?matchdate){2}
正是我正在尝试的但是那并没有做到这一点。这个页面有14个以上的“matchdate”匹配,我只想把所有东西都拿到第二个,然后别的。
https://regex101.com/r/Cjyo0f/1< ---我保存的正则表达式。
我在这里缺少什么?
感谢。
答案 0 :(得分:2)
有几种方法可以做到这一点:
g
标记如果没有全局标志,正则表达式只会抓住它遇到的第一个实例。
https://regex101.com/r/Cjyo0f/2
^
添加到正则表达式的前面插入符将强制正则表达式从字符串的开头匹配,排除所有其他可能性。
https://regex101.com/r/Cjyo0f/3
.split()
和.join()
如果常规python可用,我建议:
string = "I like to matchdate, I want to each matchdate for breakfest"
print "matchdate".join(string.split("matchdate")[:2])
答案 1 :(得分:1)
你几乎拥有它! (.*?matchdate){2}
实际上是正确的。它只需要一个re.DOTALL
标志,这样点就可以匹配换行符和其他字符。
这是一个有效的测试:
>>> import re
>>> s = '''First line
Second line
Third with matchdate and more
Fourth line
Fifth with matchdate and other
stuff you're
not interested in
like another matchdate
or a matchdate redux.
'''
>>> print(re.search('(.*?matchdate){2}', s, re.DOTALL).group())
First line
Second line
Third with matchdate and more
Fourth line
Fifth with matchdate