假设我有一个字符串:
string = "VNYTQAKENGSD"
我需要找到这个表达式所持的位置。
N {P} [ST] {P}(含义4个字母,[N,¬P,S或T,¬P]
输出为
2 9
因为在第2位你有NYTQ
和9 NGSD
如何在正则表达式中写这个?
将regex
视为常规表达式
for(i in 1:nchar(string)){
# If regex is equal to the substring of REGEX, get index.
if(regex == substr(string, 1, nchar(regex))){
vector = c(vector,i)
}
#Reduce String
string = substring(string,2)
}
请帮忙
答案 0 :(得分:1)
澄清之后,很明显你需要像
那样的正则表达式N[A-OQ-Z][ST][A-OQ-Z]
<强>详情:
N
- 匹配1次N
[A-OQ-Z]
- 一个字符类,它匹配从A
到O
以及Q
到Z
[ST]
- 与S
或T
匹配的字符类[A-OQ-Z]
- 同上。在regular-expressions.info上查看有关character classes的更多信息。
在R中(见online demo):
string <- "VNYTQAKENGSD"
z <- gregexpr("N[A-OQ-Z][ST][A-OQ-Z]", string)
z[[1]][1:length(z[[1]])]
## => [1] 2 9