python正則表達式變數
Ⅰ python 基礎教程 第10章,正則表達式匹配問題
importre
a=re.compile(r'[(.+?)]')
scope={}
defreplace(ddd):
code=ddd.group(1)
try:
returnstr(eval(code,scope))
exceptSyntaxError:
exec(code,scope)
returncode
print(a.sub(replace,'[x=1],[y=2],[z=2],thesumof[x],[z]and[y]is[x+y+z]'))
scope是在全局變數里保存正則匹配出來的x,y,z變數,存到全局變數里去;
這本書的案例在except SyntaxError:後面少了點代碼,只提供注釋,前面其實已經提到用exec賦值了,只是代碼里沒有體現出來,我完善了下這個應該能看懂了,還有[],正則已經把[]替換掉了,換成x,y,z對應的值
Ⅱ python 正則表達式是什麼
正則表達式是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。
正則表達式是用來匹配字元串非常強大的工具,在其他編程語言中同樣有正則表達式的概念,Python同樣不例外,利用了正則表達式,我們想要從返回的頁面內容提取出我們想要的內容就易如反掌了。
正則表達式的大致匹配過程是:
1、依次拿出表達式和文本中的字元比較。
2、如果每一個字元都能匹配,則匹配成功;一旦有匹配不成功的字元則匹配失敗。
3、如果表達式中有量詞或邊界,這個過程會稍微有一些不同。
Ⅲ python正則表達式 匹配<a>標簽的title
解決方法如下:
rex=r'<a.*?title="(.*?)".*?>.*?</a>'
補充一些正則表達式的知識:
##總結
##^匹配字元串的開始。
##$匹配字元串的結尾。
##匹配一個單詞的邊界。
##d匹配任意數字。
##D匹配任意非數字字元。
##x?匹配一個可選的x字元(換言之,它匹配1次或者0次x字元)。
##x*匹配0次或者多次x字元。
##x+匹配1次或者多次x字元。
##x{n,m}匹配x字元,至少n次,至多m次。
##(a|b|c)要麼匹配a,要麼匹配b,要麼匹配c。
##(x)一般情況下表示一個記憶組(rememberedgroup)。你可以利用re.search函數返回對象的groups()函數獲取它的值。
##正則表達式中的點號通常意味著「匹配任意單字元」
Ⅳ python正則表達式匹配的問題
你這個正則能夠匹配到什麼呢?只能匹配到一個空的字元串吧?
怎麼可能 會匹配到那麼長
而且filter_str這個變數在哪裡,就是上面的str?
這樣,我給你寫一個代碼片段,你試一下:
filter_str='filterparent1:0queue800:800something1:1500matchac100809/ffffffffadf'
a=re.search(r'.*',filter_str)
printa.group(0)
正則中的問號,如果放在 +號和 *號之後,表示正則的懶惰模式,你可以網路一下正則貪婪和正則懶惰,學習一下你就了解了。
Ⅳ python正則表達式是什麼意思
表示任意字元,*表示重復0至多次,.*表示任意字元出現0到多次
Ⅵ python用正則表達式是時出現錯誤
這明顯是類型錯誤,search方法的第二個參數是,字元串類型,你提供的不符合規定,所以要先給這個變數一個字元串。
希望能幫到你。。。
Ⅶ python 正則表達式的字元串變數匹配第一次出現
將這個字元串變數與「?"連接起來組成新的變數不就得了
var1="hello "
var2 ="world"
var="("+var1+")?"+var2
re.match(var,"hello world")
re.match(var,"world")
Ⅷ python正則表達式問題
你這個正則能夠匹配到什麼呢看只能匹配到一個空的字元串吧看
怎麼可能 會匹配到那麼長
而且filter_str這個變數在哪裡,就是上面的str看
這樣,我給你寫一個代碼片段,你試一下:
filter_str='filterparent1:0queue800:800something1:1500matchac100809/ffffffffadf'
a=re.search(r'.*',filter_str)
printa.group(0)
正則中的問號,如果放在 +號和 *號之後,表示正則的懶惰模式,你可以網路一下正則貪婪和正則懶惰,學習一下你就了解了。
Ⅸ 如何編寫python的正則表達式
Python re正則匹配中文,其實非常簡單,把中文的unicode字元串轉換成utf-8格式就可以了,然後可以在re中隨意調用
unicode中中文的編碼為/u4e00-/u9fa5,因此正則表達式u」[\u4e00-\u9fa5]+」可以表示一個或者多個中文字元
>>> import re
>>> s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>> s
u'\u4e2d\u6587\uff1a123456aa\u54c8\u54c8\u54c8bbcc'
>>> print s
中文:123456aa哈哈哈bbcc
>>> re.match(u"[\u4e00-\u9fa5]+",s)
<_sre.SRE_Match object at 0xb77742c0>
>>> pat='中文'.decode("utf8")
>>> re.search(pat,s)
<_sre.SRE_Match object at 0x16a16df0>
>>> newpat='這里是中文內容'.decode("utf8")
>>> news=re.sub(pat,newpat,s)
>>> print news
這里是中文內容:123456aa哈哈哈bbcc
Ⅹ python 正則
p = re.compile(r'<th class="subject new">(.*?)</th>',re.S)
不要繼續問為什麼, 去查python手冊.
還有一個小提示,不建議用str作變數名, 因為str是python內建的一個類