我正在嘗試在 perl 中實作一個 REGEX,如果字串包含我指定的任何內容,它就會匹配,但如果字串包含其他任何內容,即使它還包含我的正則運算式元素,它也必須失敗。例如:
if ($string !~ m/[ACTG]{1,}/) {
die "invalid sequence";
}
如果我輸入DQJ為 s 序列,程式就會死亡。但是,如果我輸入ACH它不會,因為它包含來自正則運算式模式的至少一個元素。
如果字串包含 A、C、T 或 G 以外的任何內容,我希望匹配失敗。
PS:在這種情況下,我不熟悉術語,在正則運算式陳述句中,我會怎么稱呼 // 里面的內容?
uj5u.com熱心網友回復:
您可以確保每個字符都是有效字符。
die if !/^[ACTG]*\z/;
使用更快的 tr//:
die if tr/ACTG// != length($_);
或者您可以確保字串不包含無效字符。
die if /[^ACTG]/;
使用更快的 tr//:
die if tr/ACTG//c;
感謝@DavidO 建議 tr//。
uj5u.com熱心網友回復:
使用^字符定義字串的開頭,使用$定義結尾。
if ($string !~ /^[ACTG]*$/){die "invalid sequence";}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/371907.html
