繁体   English   中英

R中的REGEX模式匹配课程编号

[英]REGEX pattern match in R for Course number

我需要确定具有xx.3xxxxxx的匹配课程编号。 这些是课程编号的一些例子。

26.3730004   
27.0210000    
26.3730009   
26.7114001   
23.9610071  
26.0A34430    
23.3670005    
26.0B05430    

我尝试了很多模式,我使用的一个例子是下面的模式。 它没有得到任何匹配。

“[^ 0-9] {2} \\ Q. \\ E3 [^ 0-9] + $”

我尝试使用grep和grepl。 我实际上需要代码来返回索引。

此代码显示我尝试标记具有匹配项的行。

Teacher$virtual[
            which(
                 grepl("[^0-9]{2}\\Q.\\E3[^0-9]+$",Teacher$CourseNumber))]
               <- "1"

我需要从我的数据框中删除具有该模式的课程编号的任何行。 XX.3XXXXXX

但是,我的代码没有找到任何匹配。 你能帮我么?

在这里,这个简单的表达可能会涵盖:

^[0-9]{2}\.[3].+$

它后面有一个[3]边界. 没有开始和结束锚点它可能会工作:

[0-9]{2}\.[3].+

演示

如果有必要,我们可以增加或减少边界。

你应该用

grepl("^[0-9]{2}\\.3", Teacher$CourseNumber)

看到正则表达式图

在此输入图像描述

细节

  • ^ - 字符串的开头
  • [0-9]{2} - 两位数
  • \\\\. - 一个点(请注意,正则表达式转义是字面反斜杠,但在字符串文字中, "..." ,单个反斜杠用于形成字符串转义序列,因此反斜杠必须为double才能获得必要的文字反斜杠字符为正则表达式逃脱)
  • 3 - 3字符。

注意 :如果你想使用\\Q\\E in-pattern引用(在字面上处理所有字符之间),你需要使用PCRE正则表达式,添加perl=TRUE并使用

grepl("^[0-9]{2}\\Q.\\E3", Teacher$CourseNumber, perl=TRUE)

现在,点被视为文字点,而不是. 元字符的任何字符,但换行字符匹配(在PCRE正则表达式, .不符合行默认打破字符)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM