--- tags: Unix-like, Python --- # Regular Expression 使用正規表示法時,需要特別留意當時環境語系為何,否則可能會發生不相同的擷取結果。 > 使用 grep 或其他工具進行正規表示法的字串比對時,因為編碼的問題會有不同的狀態,因此可利用特殊符號如 `[:upper:]` 來替代編碼範圍如 `[A-Z]` 佳。 > > ``` > LANG=C 時:0 1 2 3 4 ... A B C D ... Z a b c d ...z > LANG=zh_TW 時:0 1 2 3 4 ... a A b B c C d D ... z Z > ``` > [name=[語系對正規表示法的影響 / 鳥哥的 Linux 私房菜](http://linux.vbird.org/linux_basic/0330regularex.php#lang)] 所以採用特殊符號會更加明確: | 特殊符號 | 代表意義 | |-------------|---------| | `[:alnum:]` | 英文大小寫字元及數字,亦即 0-9, A-Z, a-z | | `[:alpha:]` | 任何英文大小寫字元,亦即 A-Z, a-z | | `[:digit:]` | 數字而已,亦即 0-9 | | `[:lower:]` | 小寫字元,亦即 a-z | | `[:upper:]` | 大寫字元,亦即 A-Z | | `[:punct:]` | 標點符號 (punctuation symbol),亦即:" ' ? ! ; : # $... | | RE 字符 | 代表意義 | |--------|---------| | `^` | `[^list]` 代表反向選擇,`^word` 代表定位在行首 | | `$` | 行尾 | | `.` | 一定有一個任意字元 | | `*` | 重複前一個字元,0 到無窮多次 | | `+` | 重複前一個字元,一個或一個以上 | | `?` | 重複前一個字元,零個或一個 | | `\{n,m\}` | 連續 n 到 m 個的前一個 RE 字符 | | `|` | or | | `()` | 群組 | - `?P<group_name>regex` ## 參考資料 - [RegexOne](https://regexone.com/)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up