在单词中的任何位置匹配特定字符

时间:2017-08-14 13:48:16

标签: regex pcre

如何匹配包含特定字符的单词,在任何位置说'a'和'r'?例如。在

Maria xxx Paul xxx Taylor xxx Henry xxx

正则表达式应仅匹配MariaTaylor

\d.*[ar].*\b这样的东西不起作用,因为该字符类的意思是'a OR r',而不是'a AND r'。

它似乎适用于(?i)\b\w*((?=r)\w*(?=a)|(?=a)\w*(?=r))\w*\b,但我想知道是否有更有效的模式?

我正在使用编辑器使用PCRE v8.36,没有JavaScript。谢谢!

2 个答案:

答案 0 :(得分:0)

stringr为此提供了函数str_extract_all。使用如下所示:

> string
[1] "Maria xxx Paul xxx Taylor xxx Henry xxx"

> str_extract_all(string, "[a-zA-Z]*a[a-zA-Z]*r[a-zA-Z]*")
[[1]]
[1] "Maria"  "Taylor"

答案 1 :(得分:0)

以下RegEx应完成您的任务:

[A-z]*[Aa][A-z]*[Rr][A-z]*|[A-z]*[Rr][A-z]*[Aa][A-z]*

Here你可以看到一个有效的例子。