首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用这个模式和那个模式的正则表达式

使用这个模式和那个模式的正则表达式
EN

Stack Overflow用户
提问于 2019-03-22 17:33:04
回答 2查看 59关注 0票数 0

Regex有一个or字符,但是and的字符是什么?

例如,假设我有一个包含以下文件的文件夹:

代码语言:javascript
复制
list.files(path = 'example')
# [1] "abc_clean.csv"           "abc_other_clean.csv"     "abc_other_raw.csv"      
# [4] "abc_raw.csv"             "abc_something_clean.csv" "abc_something_raw.csv"  
# [7] "def_clean.csv"           "def_other_clean.csv"     "def_other_raw.csv"      
# [10] "def_raw.csv"             "def_something_clean.csv" "def_something_raw.csv" 

我想要匹配的文件都有‘`abc’和‘干净’。所有这些工作都没有:

代码语言:javascript
复制
> list.files(path = 'example', pattern = 'abc')
[1] "abc_clean.csv"           "abc_other_clean.csv"     "abc_other_raw.csv"      
[4] "abc_raw.csv"             "abc_something_clean.csv" "abc_something_raw.csv"  

> list.files(path = 'example', pattern = 'clean')
[1] "abc_clean.csv"           "abc_other_clean.csv"     "abc_something_clean.csv"
[4] "def_clean.csv"           "def_other_clean.csv"     "def_something_clean.csv"

> list.files(path = 'example', pattern = 'abc*clean')
character(0)

> list.files(path = 'example', pattern = '[abc][clean]')
[1] "abc_clean.csv"           "abc_other_clean.csv"     "abc_other_raw.csv"      
[4] "abc_raw.csv"             "abc_something_clean.csv" "abc_something_raw.csv"  
[7] "def_clean.csv"           "def_other_clean.csv"     "def_something_clean.csv"

对于这个例子,我想要的结果是:

代码语言:javascript
复制
[1] "abc_clean.csv"           "abc_other_clean.csv"     "abc_something_clean.csv"

请注意,这并不是关于列出文件的具体情况。这不是我第一次尝试在正则表达式上得到一个and,但是我被弄糊涂了。

数据

代码语言:javascript
复制
x <- c("abc_clean.csv", "abc_other_clean.csv", "abc_other_raw.csv", "abc_raw.csv",
       "abc_something_clean.csv", "abc_something_raw.csv", "def_clean.csv",
       "def_other_clean.csv", "def_other_raw.csv", "def_raw.csv", "def_something_clean.csv",
       "def_something_raw.csv")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-22 18:51:15

为什么不允许任何字符在?abc.*clean.*之间?

如果您需要期待不同的顺序,那么使用OR:abc.*clean.*|clean.*abc.*怎么样?

演示

票数 1
EN

Stack Overflow用户

发布于 2019-03-22 17:36:49

试试Regex:^(?=.*abc)(?=.*clean).*$

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55304989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档