考虑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()
(没有\
)但没有成功。
指出我做错了什么。
答案 0 :(得分:1)
您不需要负面的后视来匹配2017
的第二个实例。
您可以使用非贪婪量词:
^.*?2017.*?(2017)
在第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
添加该代码并使用您的代码。