![](/img/trans.png)
[英]Extract URL in JSON String with Python using re.match() or split()
[英]Extract string with Python re.match
import re
str="x8f8dL:s://www.qqq.zzz/iziv8ds8f8.dafidsao.dsfsi"
str2=re.match("[a-zA-Z]*//([a-zA-Z]*)",str)
print str2.group()
current result=> error
expected => wwwqqqzzz
我想提取字符串wwwqqqzzz
。 我怎么做?
可能有很多點,比如:
"whatever..s#$@.d.:af//wwww.xxx.yn.zsdfsd.asfds.f.ds.fsd.whatever/123.dfiid"
在這種情況下,我基本上想要以//
和/
界的東西。 我如何做到這一點?
補充一個問題:
import re
str="xxx.yyy.xxx:80"
m = re.search(r"([^:]*)", str)
str2=m.group(0)
print str2
str2=m.group(1)
print str2
似乎m.group(0)
和m.group(1)
是一樣的。
match
嘗試匹配整個字符串。 改用search
。 以下模式將符合您的要求:
m = re.search(r"//([^/]*)", str)
print m.group(1)
基本上,我們正在尋找/
,然后使用盡可能多的非斜杠字符。 那些非斜杠字符將被捕獲在第 1 組中。
事實上,還有一種稍微先進的技術可以做同樣的事情,但不需要捕獲(這通常很耗時)。 它使用所謂的后視:
m = re.search(r"(?<=//)[^/]*", str)
print m.group()
環視不包括在實際比賽中,因此是預期的結果。
這(或任何其他合理的正則表達式解決方案)不會刪除.
s 立即。 但這可以在第二步中輕松完成:
m = re.search(r"(?<=//)[^/]*", str)
host = m.group()
cleanedHost = host.replace(".", "")
這甚至不需要正則表達式。
當然,如果您想刪除除字母和數字之外的所有內容(例如將www.regular-expressions.info
轉換為wwwregularexpressionsinfo
),那么您最好使用正則表達式版本的replace
:
cleanedHost = re.sub(r"[^a-zA-Z0-9]+", "", host)
print re.sub(r"[.]","",re.search(r"(?<=//).*?(?=/)",str).group(0))
請參閱此演示。
output=re.findall("(?<=//)\w+.*(?=/)",str)
final=re.sub(r"[^a-zA-Z0-9]+", "", output [0])
print final
import re
str_1="x8f8dL:s://www.qqq.zzz/iziv8ds8f8.dafidsao.dsfsi"
str2=re.match(".*//([a-zA-Z.]*)",str_1)
print(str2.group(1).replace('.',''))
import re
str="x8f8dL:s://www.qqq.zzz/iziv8ds8f8.dafidsao.dsfsi"
re.findall('//([a-z.]*)', str)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.