残念ながら、私は正規表現の専門家ではないので、少し助けが必要です。
文字列の配列をgrepして、特定の部分文字列で開始(1)または終了(2)しない文字列の2つのリストを取得する方法を探しています。
次のルールに一致する文字列を含む配列があるとします。
[speakerId]-[フレーズ]-[id].txt
すなわち
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
が、同時に特定の文字列で始まり、指定された ID のいずれかで終わる文字列は除外$speakerId
されます (たとえば$id1
、 または$id2
)特定の要素を持ち、最後に特定
$speakerId
の$phrase
ID を含まない要素 (警告: などの 10 または 11 を除外しないように注意してください$id=1
)
おそらく、誰かが次のコードを使用してソリューションを作成できます。
@AllEntries = readdir(INPUTDIR);
@Result1 = grep(/blablablahere/, @AllEntries);
@Result2 = grep(/anotherblablabla/, @AllEntries);
closedir(INPUTDIR);