1
A
回答
3
內置數組@-
保存最後一次成功的正則表達式及其捕獲出現在目標字符串中的位置。所以$-[0]
說,在整個模式匹配,而$-[1]
等保持捕獲$1
等
在結合這個位置,你需要使用一個前先行而不是簡單的正則表達式,否則正則表達式發動機會開始尋找後續匹配,只有結束後找到了前一匹配,所以不會發現重疊的發生。
這段代碼會照你的要求去做。
use strict;
use warnings;
my $seq = 'GATATATGCATATACTT';
my @offsets;
push @offsets, $-[0] while $seq =~ /(?=ATAT)/g;
print "@offsets\n";
輸出
1 3 9
1
無需正則表達式,index
可以完成所有的工作:
#!/usr/bin/perl
use warnings;
use strict;
my $substring = 'ATAT';
my $string = 'GATATATGCATATACTT';
my @positions;
my $pos = -1;
while (-1 != ($pos = index $string, $substring, $pos + 1)) {
push @positions, $pos;
}
print "@positions\n";
相關問題
- 1. 需要掛鉤到一個JavaScript函數調用,任何方式來做到這一點?
- 2. 如何在一個函數中做到這一點
- 3. 有一定是要做到這一點
- 4. 有一定是要做到這一點
- 5. 需要Snaphot在ReportNG失敗,我怎麼能做到這一點
- 6. xpath小寫 - 有沒有xpath函數來做到這一點?
- 7. Perl print%hash - 需要一些幫助來理解這個
- 8. 我需要把一個新的CSS從ASP.NET如何做到這一點
- 9. 我需要一個瀏覽器兼容的代理,可以做到這一點
- 10. 如果URL = this {//做到這一點} else {//做到這一點}
- 11. 如何製作需要做到這一點的功能?
- 12. jquery mouseenter做到這一點,mouseleave做到這一點,請點擊做到這一點,並停止mouseenter/mouseleave事件
- 13. 我可以使用MySQL來做到這一點,還是需要讓PHP參與?
- 14. 我可以用一個循環來做到這一點嗎?
- 15. 有沒有一個教程/指南來做到這一點?
- 16. 我怎樣才能用一個segue來做到這一點?
- 17. 有沒有一個bash命令來做到這一點?
- 18. 一個很好的OO方式來做到這一點(C++)
- 19. 需要一個算法來找到像一個點擊集
- 20. 需要一個函數來確定一個值的比例
- 21. 需要一個Elisp函數來推回一個輸入
- 22. 在這個函數中我需要一個字符串嗎?
- 23. 如何做到這一點?
- 24. 如何做到這一點?
- 25. 如何做到這一點?
- 26. 在C++中的一個問題。只想要一個簡單的方法來做到這一點/
- 27. 需要一個C++庫來擬合曲線到數據點
- 28. 在這兩個函數中爲什麼需要做WATCHDOG_RESET()?
- 29. 哪個ORM可以做到這一點?
- 30. 「InstantiationException:零參數構造函數」--->如何做到這一點?