作者monkey12 (猴仔)
看板Python
標題[問題] Regular Expression 相關
時間Tue Sep 10 21:30:10 2013
最近剛開始玩 python 和 regular expression
有點小小的問題想請教大家
當我想要找出字串中是否有{}內的pattern的時候
MyContent{4348be18 G.E..... ......I. 0,0-0,0
#7f08005f app:id/module_name}
嚴謹一點我知道要每個部分去做parsing
現在先簡單一點, 想判斷只要 {} 內不要有不該出現的內容就算符合 (ex.不要有問號)
奇怪的是
case1
p = re.compile("{[,_
#a-zA-Z0-9:. /-]+}") 這樣就可以正確抓出{}的頭尾
但
case2
p = re.compile("{[
#a-zA-Z0-9:. /-_,]+}") 就抓不出{}的位置
這兩種寫法只差在 _ 和 , 的位置
甚至
case3
p = re.compile("{[
#a-zA-Z0-9:. /-,_]+}") 執行就會有錯誤
sre_constants.error: bad character range
抱歉打錯了, case 3 和 case2 差在逗號的位置
想請問大家
1. case2 為什麼不行 case1卻可以
2. case3 為什麼會有這樣的錯誤
感謝感謝~~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.61.82.125
→ ya790206:關鍵在 - 09/10 21:36
→ fjm31714:在正規表示法裡[]裡面如果 - 不是要代表範圍最好放在最前 09/10 21:44
→ uranusjr:我覺得重點是不管你放哪裡最好都要 escape... 09/10 22:05
→ darkgerm:-要跳脫 09/10 23:35
→ ck574b027:你 case2 和 case3 用的字串不是一樣嗎? 09/11 00:09
※ 編輯: monkey12 來自: 210.61.82.125 (09/11 10:58)
→ monkey12:感謝各位的回答 我修改了一下 case3 09/11 10:59