str_extrac用法上較為困難,提取的部分使用比較複雜的正則表達式去做搜尋與提取,應用在長字串或是不確定字串上較有幫助
基本語法
str_extract(dataset$string, 查找的字元或字串模式)
一些正則表達式,其他的再慢慢補充,R與Python使用" \ "規則是一樣的,需要多加一個" \ "進行定位
- `//d` >> 匹配十進制數字
- `^` >> 匹配字首
- `$` >> 匹配字尾
- `\\n` >> 匹配換行符號
- `[a-z]` >> 匹配a~z(單個)
- `+` >> 匹配不只一個
有一點要注意一下
- 小寫與大寫判斷為不同字元,需要完全確定大小寫
建立個數據框進行查找
stringr_df <- tibble(
weekday = c("Sunday 4", "Monday", "Tuesday", "Wednesday",
"Thursday 77", "Friday", "Saturday 335")
)
# 輸出結果
r$> stringr_df
# A tibble: 7 x 1
weekday
<chr>
1 Sunday 4
2 Monday
3 Tuesday
4 Wednesday
5 Thursday 77
6 Friday
7 Saturday 335
使用\\d查找數字,查找結果僅以第一個結果位置作為返回條件,若要返回全部數字,需尾端加上" + "
# 查找數字
str_extract(stringr_df$weekday, "\\d")
# 輸出結果
r$> str_extract(stringr_df$weekday, "\\d")
[1] "4" NA NA NA "7" NA "3"
# 查找全部數字
str_extract(stringr_df$weekday, "\\d+")
# 輸出結果
r$> str_extract(stringr_df$weekday, "\\d+")
[1] "4" NA NA NA "77" NA "335"
以a - z作為查找範圍(不加" + "),僅返回第一個結果
# 查找a-z
str_extract(stringr_df$weekday, "[a-z]")
# 輸出結果
r$> str_extract(stringr_df$weekday, "[a-z]")
[1] "u" "o" "u" "e" "h" "r" "a"
以a - z、A - Z作為查找範圍(加" + "),返回全部結果,但不包含數字
# 查找a-z、A-Z
str_extract(stringr_df$weekday, "[A-Z][a-z]+")
# 輸出結果
r$> str_extract(stringr_df$weekday, "[A-Z][a-z]+")
[1] "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday"
[7] "Saturday"
沒有留言:
張貼留言