match尝试匹配整个字符串。请改用搜索。以下模式将符合您的要求:
m = re.search(r"//([^/]*)", str)
print m.group(1)
基本上,我们正在寻找/,然后消耗尽可能多的非斜线字符。这些非斜线字符将在第1组中捕获。
实际上,有一种稍微更先进的技术可以做同样的事情,但不需要捕获(这通常非常耗时)。它使用了所谓的lookbehind:
m = re.search(r"(?<=//)[^/]*", str)
print m.group()
Lookarounds不包含在实际匹配中,因此是期望的结果。
此(或任何其他合理的正则表达式解决方案)不会立即删除.s。但这可以在第二步轻松完成:
m = re.search(r"(?<=//)[^/]*", str)
host = m.group()
cleanedHost = host.replace(".", "")
这甚至不需要正则表达式。
当然,如果你想删除除字母和数字之外的所有内容(例如将www.regular-expressions.info转换为wwwregularexpressionsinfo),那么最好使用替换的正则表达式版本:
cleanedHost = re.sub(r"[^a-zA-Z0-9]+", "", host)