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 周銳 閱讀(2714) 評論(0)  編輯  收藏 所屬分類: Python
          主站蜘蛛池模板: 林周县| 新平| 资中县| 徐水县| 稻城县| 肥西县| 阿拉善右旗| 淮阳县| 尖扎县| 东阳市| 长顺县| 大港区| 凤台县| 保山市| 兴仁县| 旬阳县| 临漳县| 扎鲁特旗| 永丰县| 宜春市| 黑龙江省| 舒城县| 甘德县| 苍溪县| 鹿邑县| 乌拉特后旗| 高阳县| 西乌| 盈江县| 浦城县| 青河县| 聂拉木县| 中方县| 康平县| 青神县| 祁连县| 浦东新区| 金川县| 靖边县| 措勤县| 津南区|