正则表达式中n个字符之间的字符
问题描述:
我想使用正则表达式匹配以下模式(在R中,版本3.3.1):字,任何不超过10个字符的字 - 字。正则表达式中n个字符之间的字符
我试过了下面的代码:"word1".{0,10}"word2"$
,和其他一些类似的组合,但没有成功。
下面是一些例子输出:
x <- c('word1 word2', # TRUE
'word1 bla word2', # TRUE
'word1 blablabla word2') # FALSE
等
编辑: 我尝试了所有的建议,但他们不工作。我尝试从DATA API查询一些数据。在查询部分,我必须写什么我想要获得。例如,这可以工作:query = list(q = paste0(“\”“,”SomeSurname“,”。“,”SomeName“,”。“,”\“”,“〜5”,sep =“” ))),但如果我想添加约束的方式,名称和姓之间最多可以有10个任意字符,它不起作用:query = list(q = paste0(“\”“,prebivaliste [i,” prezime“],”。{0,5}“,prebivaliste [i,”ime“],”\“”,“〜5”,sep =“”)))
答
我认为这应该与您“再经过:
(word1)(?:.){0,10}(word2)
(word1) - capture the literal text: "word1"
(?:.) - Set up non capturing group for any character
{0,10} - 0-10 times
(word2) - capture the literal text "word2"
grepl('(word1)(?:.){0,10}(word2)', x)
# [1] TRUE TRUE FALSE
由于suming你想捕捉任何字来代替字词1 /字词2,你可以使用\\w
或\\w+
匹配
答
也许这就是这个简单:
nchar(gsub('word1|word2','',string))<=10
#[1] TRUE TRUE FALSE
你的[**正则表达式工程**](https://regex101.com/r/uR7jE8/1) - 没有引号和锚点'$',也就是说。 – Jan
我不知道R,但根据https://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html'word1。{0,10} word2'应该有效。 – slim
@slim:问题将是'$'和双引号。 – Jan