posts - 431,  comments - 344,  trackbacks - 0

          一些regular的tips:

          1 非貪婪flag

          >>> re.findall(r"a(\d+?)", "a23b")
                  
          ['2']
          >>>
          re.findall(r"a(\d+)", "a23b")
                  
          ['23']

          注意比較這種情況:

          >>> re.findall(r"a(\d+)b", "a23b")
                  
          ['23']
          >>>
          re.findall(r"a(\d+?)b", "a23b")
                  
          ['23']

          2 如果你要多行匹配,那么加上re.S和re.M標志
          re.S:.將會匹配換行符,默認.不會匹配換行符

          >>> re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b")
                  
          []
          >>>
          re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b", re.S)
                  
          [('23', '34')]
          >>>

          re.M:^$標志將會匹配每一行,默認^和$只會匹配第一行

          >>> re.findall(r"^a(\d+)b", "a23b\na34b")
                  
          ['23']
          >>>
          re.findall(r"^a(\d+)b", "a23b\na34b", re.M)
                  
          ['23', '34']

          但是,如果沒有^標志,

          >>> re.findall(r"a(\d+)b", "a23b\na23b")
                  
          ['23', '23']

          可見,是無需re.M

          原文地址:http://www.juyimeng.com/python-multi-line-non-greedy-regular-expression-sample.html

          posted on 2009-05-26 22:42 周銳 閱讀(2713) 評論(0)  編輯  收藏 所屬分類: Python
          主站蜘蛛池模板: 竹溪县| 江山市| 渝北区| 阳原县| 洛南县| 泰安市| 崇信县| 吉安县| 中方县| 山丹县| 武安市| 循化| 泸西县| 财经| 台东市| 凉山| 西藏| 志丹县| 利川市| 宾阳县| 利辛县| 盘锦市| 滁州市| 游戏| 吴堡县| 麻栗坡县| 恩平市| 肇源县| 高雄县| 潜山县| 静安区| 保德县| 大丰市| 东乡族自治县| 额尔古纳市| 皋兰县| 呼和浩特市| 吉安市| 兴仁县| 深水埗区| 辽阳市|