如何使用正则表达式获取 r 中第一个单引号内的单词?
How to get the words within the first single quote in r using regex?
比如我有两个字符串:
stringA = "'contentX' is not one of ['Illumina NovaSeq 6000', 'Other', 'Ion Torrent PGM', 'Illumina HiSeq X Ten', 'Illumina HiSeq 4000', 'Illumina NextSeq', 'Complete Genomics', 'Illumina Genome Analyzer II']"
我不熟悉如何做正则表达式并且坚持在第一个单引号内提取单词。
预计
## do regex here
gsub("'(.*)'", "\1", stringA) # not working
> "contentX"
对于您的示例,您的模式将是:
gsub("^'(.*?)'.*", "\1", stringA)
https://regex101.com/r/bs3lwJ/1
首先我们断言我们在字符串的开头,后面的字符是带有 ^'
的单引号。然后我们捕获所有内容,直到第 1 组中的下一个单引号,使用 (.*?)'
.
请注意,我们需要 .*?
中的 ?
否则 .*
将“贪婪”并一直匹配到单引号的最后一次出现,而不是下一个单引号。
比如我有两个字符串:
stringA = "'contentX' is not one of ['Illumina NovaSeq 6000', 'Other', 'Ion Torrent PGM', 'Illumina HiSeq X Ten', 'Illumina HiSeq 4000', 'Illumina NextSeq', 'Complete Genomics', 'Illumina Genome Analyzer II']"
我不熟悉如何做正则表达式并且坚持在第一个单引号内提取单词。
预计
## do regex here
gsub("'(.*)'", "\1", stringA) # not working
> "contentX"
对于您的示例,您的模式将是:
gsub("^'(.*?)'.*", "\1", stringA)
https://regex101.com/r/bs3lwJ/1
首先我们断言我们在字符串的开头,后面的字符是带有 ^'
的单引号。然后我们捕获所有内容,直到第 1 组中的下一个单引号,使用 (.*?)'
.
请注意,我们需要 .*?
中的 ?
否则 .*
将“贪婪”并一直匹配到单引号的最后一次出现,而不是下一个单引号。