我有一个与正则表达式相关的问题;这是一段代码片段:
rr <- regex("^chapter [\\divxlc]", ignore_case = T)
library(dplyr)
dd <- c("hello there", "Chapter 1", "begining of life", "end of chapter", "Chapter X", "Chapter T", "Chapter 10")
dd_df <- data_frame(line=1:length(dd), text = dd)
# dd_df now looks as follows
# A tibble: 7 x 2
line text
<int> <chr>
1 1 hello there
2 2 Chapter 1
3 3 begining of life
4 4 end of chapter
5 5 Chapter X
6 6 Chapter T
7 7 Chapter 10 (edited)
当我根据dd_df
dd_df %>% mutate(rr = str_detect(text, rr), regexp = "^chapter [\\divxlc]")
我明白了:
# A tibble: 7 x 4
line text rr regexp
<int> <chr> <lgl> <chr>
1 1 hello there FALSE "^chapter [\\divxlc]"
2 2 Chapter 1 TRUE "^chapter [\\divxlc]"
3 3 begining of life FALSE "^chapter [\\divxlc]"
4 4 end of chapter FALSE "^chapter [\\divxlc]"
5 5 Chapter X TRUE "^chapter [\\divxlc]"
6 6 Chapter T FALSE "^chapter [\\divxlc]"
7 7 Chapter 10 TRUE "^chapter [\\divxlc]"
我无法确定第2行和第7行如何评估TRUE
?
答案 0 :(得分:1)
您的regex
定义为:regex("^chapter [\\divxlc]", ignore_case = T)
请注意ignore_case = T
。因此,"^chapter "
将与第2行和第7行中的Chapter
匹配。
下一部分是[\\divxlc]
- 这意味着要查找digit
(\\d
)或来自i
的字符,v
,{{ 1}},x
或l
。
再次在第2行和第7行c
后跟Chapter
匹配1
。因此,这两行(\d
)和2 & 7
是匹配的。
其他行都不匹配这两个条件。