r语言 - 使用 grep 检查命名约定是否遵循正则表达式



我正在测试命名约定,但我无法让正则表达式足够精确。有没有办法限制下划线的数量,我们有一定数量的字段由下划线划分,但其中一些是我需要允许通过的自由文本字段。在这里,我只想检查字段的结构。

nameP <- as.character("SX_anything_SX")  # correct: i.e. 1
nameP <- as.character("SX_anything__SX") # correct: i.e. 1 but should be incorrect
nameP <- as.character("SX_anything_SXS") # error on end: i.e. 0
nameP <- as.character("SXS_anything_SX") # error on start: i.e. 0
placement_regxpr <- '^[A-Z]{2}_.*_[A-Z]{2}$'
isMatch <- grep(pattern = placement_regxpr,x = nameP, ignore.case = TRUE)
isMatch
您可以使用

placement_regxpr <- '^[A-Z]{2}_[^_]*_[A-Z]{2}$'

查看正则表达式演示

正则表达式将仅匹配:

  • ^ - 字符串的开头
  • [A-Z]{2} - 两个 ASCII 字母(由于使用了 ignore.case = TRUE,因此此字符类/括号表达式将匹配小写和大写字母(
  • _ - 下划线
  • [^_]* - 除_以外的 0 个或多个字符
  • _ - 下划线
  • [A-Z]{2} - 两个 ASCII 字母
  • $ - 字符串的结尾。

最新更新