我想在R中編寫正則表達式來驗證用戶輸入並相應地運行程序。 預計有3種類型的查詢,都是字符向量。在R中驗證輸入字符串的正則表達式
query1 = "Oct4[Title/Abstract] AND BCR-ABL1[Title/Abstract]
AND stem cells[Title] AND (2000[PDAT] :2015[PDAT])"
query2 <-c("26527521","26711930","26314551")
以下代碼有效。但面臨的挑戰是在兩種情況下
all(grepl("[A-Za-z]+",query,perl=TRUE)) validates False for query 2
或@sebkopf建議限制特殊字符
all(grepl("^[0-9 ,]+$", query)) # evaluates to TRUE only for query 2
然而,查詢1也需要在一年的輸入,這意味着它的數字輸入應該被接受查詢1.爲了增加複雜性,在query1中允許使用space , . - []()
。而且,查詢2的格式應該只是數字,用, or space
分隔。其他任何事情都應該拋出一個錯誤。
如何將這兩個條件合併爲R正則表達式的一部分?那麼,下面的if conditions
被驗證相應地運行相應的代碼?
if (grepl("regex for query 1& 2",query,perl=TRUE) == True {
Run code 1
} else { print ("these characters are not allowed @ ! & % # * ~ `_ = +") }
if (grepl("regex for query3",query,perl=TRUE) == True {
Run code 2
} else { print ("these characters are not allowed @ ! & % # * ~ `_ = + []() - . ")}
什麼是你的問題? – simbabque
對不起,監督。尋找解決方案,將允許一些特殊字符和限制其他? – user5249203
然後請刪除多餘的內容,只保留與問題相關的內容。而[MVCE(最小完整的可驗證示例)](http://stackoverflow.com/help/mcve)會很有幫助。 –