代码之家  ›  专栏  ›  技术社区  ›  Teifion

python和“re”

  •  6
  • Teifion  · 技术社区  · 16 年前

    我在python中的一个关于regex的教程解释了如何在python中使用re模块,我想从一个标记中获取url,这样知道regex后,我编写了正确的表达式,并在我选择的regex测试应用程序中对其进行了测试,确保它正常工作。放入python时失败。

    在我花了很多时间才发现这个问题之后,它会自动地期望您的模式在字符串的开头。我找到了一个修复方法,但我想知道如何更改:

    regex = ".*(a_regex_of_pure_awesomeness)"
    

    进入之内

    regex = "a_regex_of_pure_awesomeness"
    

    好吧,这是一个标准的URL regex,但我想避免任何潜在的困惑,我想摆脱什么,可能假装有趣。

    5 回复  |  直到 6 年前
        1
  •  20
  •   zweiterlinde    16 年前

    在python中,“match”和“search”是有区别的;match只在字符串开始处查找模式,search从字符串中的任何位置开始查找模式。

    Python regex docs
    Matching vs searching

        2
  •  4
  •   jfs    16 年前
    from BeautifulSoup import BeautifulSoup 
    
    soup = BeautifulSoup(your_html)
    for a in soup.findAll('a', href=True):
        # do something with `a` w/ href attribute
        print a['href']
    
        3
  •  3
  •   Aaron Maenpaa    16 年前
    >>> import re
    >>> pattern = re.compile("url")
    >>> string = "   url"
    >>> pattern.match(string)
    >>> pattern.search(string)
    <_sre.SRE_Match object at 0xb7f7a6e8>
    
        4
  •  1
  •   mmaibaum    16 年前

    您可能被不同的方法re.search和re.match绊倒了。

        5
  •  1
  •   Harsha Biyani Amit    6 年前

    你用的是 re.match() re.search() 方法?我的理解是 重新匹配() 假设“ ^ “在表达式的开头,将只搜索文本的开头,而 重新搜索() 行为更像Perl正则表达式,并且仅当您包含一个“ ^ “在你表达的开始。希望有帮助。