match
tries to match the entire string. Use search
instead. The following pattern would then match your requirements:
m = re.search(r"//([^/]*)", str)
print m.group(1)
Basically, we are looking for /
, then consume as many non-slash characters as possible. And those non-slash characters will be captured in group number 1.
In fact, there is a slightly more advanced technique that does the same, but does not require capturing (which is generally time-consuming). It uses a so-called lookbehind:
m = re.search(r"(?<=//)[^/]*", str)
print m.group()
Lookarounds are not included in the actual match, hence the desired result.
This (or any other reasonable regex solution) will not remove the .
s immediately. But this can easily be done in a second step:
m = re.search(r"(?<=//)[^/]*", str)
host = m.group()
cleanedHost = host.replace(".", "")
That does not even require regular expressions.
Of course, if you want to remove everything except for letters and digits (e.g. to turn www.regular-expressions.info
into wwwregularexpressionsinfo
) then you are better off using the regex version of replace
:
cleanedHost = re.sub(r"[^a-zA-Z0-9]+", "", host)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…