豎線-匹配兩者之一
豎線表示 匹配 前者 或 後者 。
特別要注意的是, 豎線在正規表示式的優先順序是最低的, 這就意味著,豎線隔開的部分是乙個整體
比如綠色|橙
表示 要匹配是綠色
或者橙
,
而不是綠色
或者綠橙
從下面的文字裡面抓取 所有職位的薪資
python3 高階開發工程師 上海互教教育科技****上海-浦東新區2萬/月02-18滿員測試開發工程師(c++/python) 上海墨鵾數碼科技****上海-浦東新區2.5萬/每月02-18未滿員
python3 開發工程師 上海德拓資訊科技股份****上海-徐匯區1.3萬/每月02-18剩餘11人
測試開發工程師(python) 赫里普(上海)資訊科技****上海-浦東新區1.1萬/每月02-18剩餘5人
我們使用的表示式是([\d.]+)萬/每月
為什麼這麼寫呢?
[\d.]+
表示 匹配 數字或者點的多次出現 這就可以匹配像: 3 33 33.33 這樣的 數字
萬/每月
是後面緊接著的,如果沒有這個,就會匹配到別的數字, 比如 python3 裡面的3。
其中每月
這部分表示匹配每月
每 這個字可以出現 0次或者1次。
聰明的你能想到,還可以用什麼來表示這個每月
嗎?
對啦,還可以用每?月
因為問號表示 前面的字元匹配0次或者1次
使用正規表示式切割字串
字串 物件的 split() 方法只適應於非常簡單的字串分割情形。當你需要更加靈活的切割字串的時候,就不好用了。
比如,我們需要從下面字串中提取武將的名字。
我們發現這些名字之間, 有的是分號隔開 ,有的是逗號隔開,有的是空格隔開, 而且分割符號周圍還有不定數量的空格
names = '關羽; 張飛, 趙雲,馬超, 黃忠 諸葛亮'
這時,最好使用正規表示式裡面的 split 方法:
import renames = '關羽; 張飛, 趙雲, 馬超, 黃忠 諸葛亮'
namelist = re.split(r'[;,\s]\s*', names)
print(namelist)
正規表示式[;,\s]\s*
指定了,分割符為 分號、逗號、空格 裡面的任意一種均可,並且 該符號周圍可以有不定數量的空格。
正規表示式示例
表示式匹配 s 匹配空行。d d 驗證由兩位數字 乙個連字元再加 5 位數字組成的 id 號。s s s s s s 1 s 匹配 html 標記。下表包含了元字元的完整列表以及它們在正規表示式上下文中的行為 字元說明 將下一字元標記為特殊字元 文字 反向引用或八進位制轉義符。例如,n 匹配字元 n...
正規表示式示例
匹配 s 匹配空行。d d 驗證由兩位數字 乙個連字元再加 5 位數字組成的 id 號。s s s s s s 1 s 匹配 html 標記。下表包含了元字元的完整列表以及它們在正規表示式上下文中的行為 說明 將下一字元標記為特殊字元 文字 反向引用或八進位制轉義符。例如,n 匹配字元 n n 匹配...
正規表示式 示例
正規表示式的最簡單形式是在搜尋字串中匹配其本身的單個普通字元。例如,單字元模式,如 a,不論出現在搜尋字串中的何處,它總是匹配字母 a。下面是一些單字元正規表示式模式的示例 a 7 m 可以將許多單字元組合起來以形成大的表示式。例如,以下正規表示式組合了單字元表示式 a 7 和 m。a7m 請注意,...