负面观察不匹配

时间:2017-11-06 07:38:06

标签: python regex python-2.7

考虑text = "car price is $2017 and manufactured in 2017 and make is Honda",我正在尝试编写与2017年第二个(制造年份)相匹配的正则表达式。为此,我使用负面的lookbehind模式,但匹配的字符串始终是2017年的第一个。

我使用的代码是re.search('(?<!\$)2017', text).group(),并且还使用了re.search('(?<!$)2017', text).group()(没有\)但没有成功。

指出我做错了什么。

2 个答案:

答案 0 :(得分:1)

您不需要负面的后视来匹配2017的第二个实例。

您可以使用非贪婪量词:

^.*?2017.*?(2017)

RegEx Demo

在第5组中捕获第二个实例。 1

<强>代码:

>>> str = 'car price is $2017 and manufactured in 2017 and make is Honda'
>>> print re.findall(r'^.*?2017.*?(2017)', str)
['2017']

答案 1 :(得分:0)

您缺少的是<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <table class="table"> <thead> <tr> <th>Product</th> <th>Config</th> <th>Version</th> <th>Status</th> </tr> </thead> <tbody> <tr class="has-history open"> <td><a href="#">MSM8992</a></td> <td>Estel</td> <td>2</td> <td>Active</td> </tr> <tr class="expanded"> <td colspan="4"> <table class="table" > <thead> <tr> <th>Product</th> <th>Config</th> <th>Version</th> <th>Status</th> </tr> </thead> <tbody> <tr> <td><a href="#">MSM8994</a></td> <td>Elessar</td> <td>1</td> <td>Active</td> </tr> </tbody> </table> </td> </tr> <tr> <td><a href="#">MSM8994</a></td> <td>Elessar</td> <td>1</td> <td>Active</td> </tr> <tr> <td><a href="#">APQ8084</a></td> <td>Gandalf - PoP Memory</td> <td>1</td> <td>Active</td> </tr> <tr class="has-history"> <td><a href="#">MDM9x40</a></td> <td>Tesla</td> <td>3</td> <td>Active</td> </tr> <tr> <td><a href="#">MDM9x45</a></td> <td>Spark</td> <td>1</td> <td>Active</td> </tr> <tr class="has-history"> <td><a href="#">APQ8084</a></td> <td>Gandalf - External Memory</td> <td>1</td> <td>Active</td> </tr> </tbody> </table>,表示原始字符串

r

添加该代码并使用您的代码。