簡體   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