REGEX:ASCII & url 問題
您好,看了解答還是沒有很懂下面這兩部分的regex,可以比較詳細的說明嗎?下面我較清楚的說一下我哪裡不懂,共4小點問題...看了維基的ASCLL的說明還是沒有很懂他是甚麼。
hostname的名稱是以句號區隔所組成,每一個部分可以是ASCII字元、數字、連字號,但不能以連字號開始或結束,因此我們寫成:([a-z0-9]\.|[a-z0-9][-a-z0-9]*[a-z0-9]\.)+
這邊大概是說hostname的形式應該是"x.",這邊想請老師解釋:
1. [a-z0-9] 是什麼?
2. [-a-z0-9] 是什麼?跟上面那一個的差異?
3. [a-z0-9][-a-z0-9]*[a-z0-9] 是什麼?尤其是*的意思
URL的path 部分,可以有除了空白字元、控制字元<>(){}以外的大部分ASCII字元,因此我們寫成:[-a-z0-9_:@&?=+,.!\/~*\'%$]*
4. 這邊大概可以理解-a-z0-9是ASCLL,但後面那一串完全不懂是怎麼列出來的。
回答列表
-
2020/03/22 下午 08:56Jeffrey贊同數:1不贊同數:0留言數:1
在正則表達式當中,有許多符號具有特殊意義,例如
1. 點符號 . 是用來表示任意字元的,
2. 星號 * 是代表 0 次或以上,
3. 加號 + 代表一次或以上,
4. 用斜線 \ 代表跳出字元,此,當我們看到 \ 符號時,必須繼續向後看,才能知道其所代表的意義。
5. \. 代表小數點符號 .
6. 字元範圍。匹配指定範圍內的任意字元。例如,“[a-z]”可以匹配“a”到“z”範圍內的任意小寫字母字元。
-
2020/03/23 上午 01:09張維元 (WeiYuan)贊同數:1不贊同數:0留言數:0
嗨,以下簡單回覆你的問題:
1. ASCLL -> ASCII 才對
2. [a-z0-9] 代表 a-z0-9 這 26 個小寫字母 + 10 個數字是符合條件的。[-a-z0-9]* 代表 -a-z0-9 這 26 個小寫字母 + 10 個數字 + 「-」符號是符合條件的,「*」號代表這個條件可以重複 N 次
3. [a-z0-9][-a-z0-9]*[a-z0-9] 代表 ip 的規則是:第一個字是 [a-z0-9] 組成,中間是 N 個 [-a-z0-9] 的字,最後一個字是 [a-z0-9]。
如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃