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

Matching specific characters at any position in words

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

Maria xxx Paul xxx Taylor xxx Henry xxx

正则表达式应仅匹配 MariaTaylor

\d.*[ar].*\b 这样的东西不起作用,因为那个字符 class 意味着 'a OR r',而不是 'a AND r'。

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

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

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"

以下 RegEx 应该可以完成您的任务:

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

Here你可以看到一个工作示例。