正则表达式中“(\ w){3}”和“(\ w {3})”之间有什么区别?

时间:2017-05-02 15:03:42

标签: python regex

import re
m = re.match('(\w){3}', "THU")
m.group(1)

解决方案是“U”。

我知道正确的方法是“(\ w {3})”,但是什么是“(\ w){3}”?为什么它在上面的例子中与“U”而不是“T”相匹配?

2 个答案:

答案 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})
相关问题