不幸的是,我不是正则表达式专家,所以我需要一点帮助。
我正在寻找解决方案如何 grep 字符串数组以获取两个不以特定子字符串开头(1)或结尾(2)的字符串列表。
假设我们有一个数组,其中的字符串符合以下规则:
[speakerId]-[短语]-[id].txt
IE
10-phraseone-10.txt 11-phraseone-3.txt 1-phraseone-2.txt 2-phraseone-1.txt 3-phraseone-1.txt 4-phraseone-1.txt 5-phraseone-3.txt 6 -phraseone-2.txt 7-phraseone-2.txt 8-phraseone-10.txt 9-phraseone-2.txt 10-phrasetwo-1.txt 11-phrasetwo-1.txt 1-phrasetwo-1.txt 2-短语二-1.txt 3-短语二-1.txt 4-短语二-1.txt 5-短语二-1.txt 6-短语二-3.txt 7-短语二-10.txt 8-短语二-1.txt 9-短语二-1.txt 10-phrasethree-10.txt 11-phrasethree-3.txt 1-phrasethree-1.txt 2-phrasethree-11.txt 3-phrasethree-1.txt 4-phrasethree-3.txt 5-phrasethree- 1.txt 6-phrasethree-3.txt 7-phrasethree-1.txt 8-phrasethree-1.txt 9-phrasethree-1.txt
让我们引入变量:
$speakerId
$phrase
$id1
,$id2
我想 grep 一个列表并获取一个数组:
包含特定的元素,
$phrase
但我们排除同时以特定$speakerId
的 AND 以指定的 id 之一结尾的字符串(例如$id1
or$id2
)具有特定但最后不包含特定 id 之一的元素
$speakerId
($phrase
警告:记住不要排除 10 或 11$id=1
等)
也许有人可以使用以下代码来编写解决方案:
@AllEntries = readdir(INPUTDIR);
@Result1 = grep(/blablablahere/, @AllEntries);
@Result2 = grep(/anotherblablabla/, @AllEntries);
closedir(INPUTDIR);