正则表达式字符串以匹配 R 中的列表

标签 r regex string

我正在寻找一个字符串匹配查找器来测试输出中的以下字符串是否可以从列表中提取 stringsToTest .
我有一个正则表达式字符串,但无法获得正确的组合。这有很多可能性。
我的实际列表大约有 140,000 个字符串,我只想找到这个组合:

stringsToTest = list("abc/a3d)-1-B-3-B","dec/d93)-B-1-3",
                     "vdiek/asdf899)-1-B-B-B-1-3-4","avd/asd/vde)-1-B-3-4",
                     "ab33/dfv)-B-12-B","abc/ade)-1")
我使用 grepl b/c 它给我以下字符串的真或假
grepl(stringsToTest, #pattern=#pattern="([:alnum:]+\\/){2}\\){1}a\\-]{1}([:alnum:]*a\\-]){3}.*$")){
    pattern="[:alnum:]+[:punct:]+[:alnum:]+[:punct:]+[:alnum:]+[:punct:]+[:alnum:]+[:punct:]+[:alnum:]+[:punct:]+[:alnum:].*$")
#[1] FALSE FALSE FALSE FALSE FALSE FALSE
我想要的输出是。前斜线、复数和连字符必须完全相同。我的截断符是一个正斜杠,然后是一个副词,然后是三个连字符。如果有的话,我会排除更多的连字符
示例中所示。
预期输出:
[1] TRUE TRUE TRUE FALSE TRUE FALSE

最佳答案

您可以使用

^[[:alnum:]]+/[[:alnum:]]+\)(?:-[[:alnum:]]+){3}
regex demo .细节:
  • ^ - 字符串开头
  • [[:alnum:]]+ - 一个或多个字母或数字
  • / - /字符
  • [[:alnum:]]+ - 一个或多个字母/数字
  • \) - )字符
  • (?:-[[:alnum:]]+){3} - 三个 -然后是一个或多个字母/数字序列。

  • R demo :
    stringsToTest = list("abc/a3d)-1-B-3-B","dec/d93)-B-1-3",
                         "vdiek/asdf899)-1-B-B-B-1-3-4","avd/asd/vde)-1-B-3-4",
                         "ab33/dfv)-B-12-B","abc/ade)-1")
    grepl(stringsToTest, 
         pattern="^[[:alnum:]]+/[[:alnum:]]+\\)(?:-[[:alnum:]]+){3}")
    ## => [1]  TRUE  TRUE  TRUE FALSE  TRUE FALSE
    

    关于正则表达式字符串以匹配 R 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66081404/

    相关文章:

    r - 在不同的文件位置从 R Markdown 创建 PDF

    r - 将数字 (%Y.%m) 列拆分为两列

    java - 我需要一个正则表达式来使用 java 进行名称验证

    ruby - 在 Ruby 中删除部分字符串(小写)并保留原始字符串(大写)

    python 使用正则表达式搜索和更新字符串

    java - Android中的下标和上标字符串

    r - mutate_at 在某些情况下不会创建变量后缀?

    c# - C#正则表达式仅匹配字符串中完整单词的一部分

    javascript - 如何向正则表达式插入参数?

    r - 提高 R 光线着色器图像的分辨率