import re
m = re.match('(\w){3}', "THU")
m.group(1)
解决方案是“U”。
我知道正确的方法是“(\ w {3})”,但是什么是“(\ w){3}”?为什么它在上面的例子中与“U”而不是“T”相匹配?
答案 0 :(得分:1)
你可能知道:
\w
匹配'字'字符{3}
表示匹配最后一个' 3次(
和)
定义了一个您可以稍后检索的捕获组在(\w){3}
中,捕获组包含一个字母,虽然您连续匹配3个,但捕获组最终会得到最后一个的值在这里的示例中,它匹配了' U'
在(\w{3})
中,捕获组包含3个单词字符,因此对于相同的输入匹配THU
。
答案 1 :(得分:0)
说明:
<div id="click" class="coupon-detail coupon-button-type">
<a href="#" class="coupon-button coupon-code" data-aff-url="https://example.com">
<span class="code-text">CODE</span>
<span class="get-code">Get Code</span>
</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
<div class="coupon-footer coupon-listing-footer">
<ul class="clearfix">
<script type="text/javascript">
$(document).ready(function(e) {
$('#click').click(function(){
<?php
$update = "UPDATE coupon_stats SET today = today + 1";
$query_coupon = mysqli_query($con , $update)or die(mysqli_error($con));
?>
})
});
</script>
<?php
$select = "SELECT * FROM coupon_stats";
$query_select = mysqli_query($con,$select);
$data = mysqli_fetch_assoc($query_select);
?>
<li><span><i class="wifi icon"> </i> <?php echo $data['today'].' Coupon Used'; ?>
</span>
</li>
由于它仅在(\w){3}
^ ^ Capture
^ A Single character in range [a-zA-Z0-9_]
^ exactly three times
附近捕获组而不包括大括号量词,因此\w
返回\w
的最后一个U
m.group(1)
你可以获取与m.group(0)
匹配的所有三个字符。
这种(pattern){repetition}
的一般形式对于在没有列表或数组的正则表达式实现中获取pattern
的最后一个匹配非常有用。
在Python中,你也可以这样做:
>>> re.findall(r'\w', "THU")[-1]
'U'
但是一些正则表达式实现没有那么方便。
如果你想捕捉所有匹配的三个字符,你可以这样做:
(\w{3})