我正在尝试编写一个正则表达式来检测具有以下条件的字符串:
' - _
。看一下类似的问题,我已经写了这个:
grepl(pattern="(^[[:alpha:][:blank:]]+$)", mylistofstrings) #do not resognize '
grepl("'",data$last_nm ) #I search for ' here
有关如何做的任何想法?我正在使用R.
答案 0 :(得分:1)
您需要将(您所说的)特殊字符添加到字符类中允许的字符中。最外面的[...]
内的任何内容都是您允许的单个字符列表;并且+
量词需要一次或多次重复这种单字符模式。
但是,为了满足至少一个字母字符的要求,您可以重构所需字符和可选字符列表中的任何内容,后跟一个字母字符,后跟所需列表中的任何内容或可选字符"允许与一个必需字符相邻的组为空。
grepl(pattern="(^[-'_[:alpha:][:blank:]]*[[:alpha:]][-'_[:alpha:][:blank:]]*$)", mylistofstrings)
字符类中的减号是棘手的,因为它需要是第一个或最后一个(你不能说['-_]
,因为这意味着任何字符的ASCII码介于'
和_
的ASCII码;它必须是[-'_]
或['_-]
);除此之外,方括号内的顺序是任意的。