这是一个旋转课程的问题:
目标是使用元音过滤和打印位置数据的开始和结束。
以下是代码:
start_end_vowel<- "^[AEIOU]{1}.+[aeiou]{1}$" #Q1
vowel_state_lgl <-grepl(start_end_vowel,state.name) #Q2
state.name[vowel_state_lgl] #Q3
[1] "Alabama" "Alaska" "Arizona" "Idaho" "Indiana" "Iowa" "Ohio" "Oklahoma"
我的问题是,Q1中.
的用途是什么?
我知道.
适用于任何角色,在上面的情况下,我们希望使用元音开始定位,但为什么+[aeiou]{1}$
不需要.
?事实上,如果使用+[aeiou]{1}.$
那么在这种情况下使用.
的适当方法是什么?
答案 0 :(得分:0)
以下是您的RegEx如何阅读的细分:
^[AEIOU]{1}.+[aeiou]{1}$
^ Start of a line
[AEIOU] Match any single character inside the []. A single upper-case vowel
{1} Match the preceding token exactly once
. Match any character (depending on your RegEx engine and options this will behave with slight variation.)
+ Match the preceding token as many times as possible. "Any character any number of times"
[aeiou]{1} Match a single lower-case vowel.
$ Match the end of a line.
要回答您的问题,[aeiou]{1}$
不需要.
,因为它会如下所示:
[aeiou]{1}.$
[aeiou]{1} Match any lower-case vowel one time
. Match any other character one time
$ Match end of line
这意味着您的RegEx只匹配以大写元音开头的行。
在提供RegEx建议之前,我总是说这个:我不是RegEx忍者;可能有更好的方法来做到这一点。话虽如此,如果您需要匹配以不区分大小写的元音开头的行,请改用:
^[aeiouAEIOU].+[aeiouAEIOU]$
请注意,我删除了多余的{1}
限定符。默认情况下它应匹配一个字符。