[問題] 用regex提取2到3位的數字

作者: luenchang (luen)   2020-12-21 12:17:10
各位先進,
我想從字串中提取出數字的部分。我的字串有規律性,結構上,開頭是2到3位的數字,空白
,接著不等位數的字母,或字母和數字。我想提取的是開頭的部分。我試了兩個方法,方法
1只拿出數字的最末位,方法2拿出完整的數字。我不知道方法1的regex寫法有什麼錯。
以下是我的字串及code
# Strings to extract
strings <- c("130 UDINE", "162 BF02", "163 AS04", "164 AL08", "165 BR12", "166 S
A13", "167 MA14", "167 MA14", "168 OC15", "85 BERGAMO")
# Method 1 to extract the beginning part of the strings (not working)
gsub(pattern = "^(\\d){2,3}(\\s).*", replacement = "\\1", x=strings)
# [1] "0" "2" "3" "4" "5" "6" "7" "7" "8" "5"
# Method 2 to extract the beginning part of the strings (not working)
gsub(pattern = "^(\\d+)(\\s).*", replacement = "\\1", x=strings)
# [1] "130" "162" "163" "164" "165" "166" "167" "167" "168" "85"
謝謝
作者: celestialgod (天)   2020-12-21 13:11:00
library(stringr); str_extract_all(strings, ”\\d{2,3}”)
作者: andrew43 (討厭有好心推文後刪文者)   2020-12-21 13:23:00
用tstrsplit很直覺data.table::tstrsplit(strings, " ", keep = 1)[[1]]
作者: resentis (Ask and It's Given)   2020-12-21 20:30:00
大概是\\d的數量範圍要跟緊\\d"^(\\d{2,3})(\\s).*"
作者: JuanMaestrow (多多)   2020-12-21 21:45:00
str_extract(string, regex(“^\\d+”)) 就可以囉

Links booklink

Contact Us: admin [ a t ] ucptt.com