簡體   English   中英

正則表達式與此模式和那個模式

[英]Regex with this pattern AND that pattern

正則表達式具有or的字符,但and的字符是什么?

例如,假設我有一個包含以下文件的文件夾:

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”和“ clean”的文件。 這些都不起作用:

> 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"

對於此示例,我想要的結果是這樣的:

[1] "abc_clean.csv"           "abc_other_clean.csv"     "abc_something_clean.csv"

並且請注意,這與列表文件的特定情況無關。 這不是第一次,我試圖讓一個and上一個正則表達式和糊塗了。

數據

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")

為什么不只允許它們之間的任何字符? abc.*clean.*

如果需要不同的順序,請使用OR: abc.*clean.*|clean.*abc.*

演示

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

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM