回答
有兩個特殊數組@@和@ +,其中包含起始位置 和成功匹配的結束位置。匹配完成後,使用數組長度 。
靜態分析:要知道需要解析正則表達式字符串的所有對。 計算所有未關閉的開放支架,其中有一個關閉的支架。
未轉義的開頭括號中沒有「?:」後面的(?:text)無法捕獲 – 2009-05-27 11:09:04
你想知道有多少場比賽有或有多少組括號?如果你想能夠計算括號,那麼你可能需要看看如Text::Balanced這樣的模塊來分析分隔文本。
在另一方面,如果你想知道如何匹配有你會過得更好執行在列表環境正則表達式:
my @matches = $string_to_match_on =~ /(\w(\w))/;
列表的大小會給你匹配的數量:
my $count = @matches;
(作爲標量上下文中的列表或數組給出列表或數組的大小)。
我試圖找出捕獲次數(可能的匹配)。 我很謹慎試圖計算括號作爲邊緣案例的藉口,例如 「\\(」或[(] – justintime 2009-05-27 10:17:11
)我認爲您可能需要一個「正確的」解析器,例如Text :: Balanced,或者您可以謹慎風並使用Parse :: RecDescent編寫一個你是對的,計算括號不太可能工作很長時間你是否正在處理正則表達式作爲輸入到你的代碼中? – 2009-05-27 11:32:47
因爲並非所有的括號都沒有捕獲 - 例如(?:...),(?= ...)等等,這並不是很簡單。
一般來說,記住你隨時可以:
my @catch_all = $string =~ m/......................./;
,然後只檢查@catch_all;
重要的是要知道爲什麼你需要這個。
請問YAPE::Regex有幫助嗎?
編輯:這裏是示範:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use YAPE::Regex;
my $regex = qr/^(A)(B)(C)[0-9]+(\w+)$/;
my $parser = YAPE::Regex->new($regex);
my $n_captures;
while (my $node = $parser->next) {
if ($parser->state =~ /^capture\(([0-9]+)\)$/) {
$n_captures = $1;
}
}
print "$n_captures\n";
C:\Temp> t
4
- 1. C#正則表達式捕獲括號
- 2. 正則表達式,PHP:如何否定一個捕獲括號
- 3. 正則表達式:在多個捕獲中捕獲多個
- 4. perl正則表達式大括號
- 5. 正則表達式 - 捕捉大括號
- 6. 正則表達式和捕捉括號
- 7. perl正則表達式:使用正則表達式捕獲
- 8. 如何捕獲括號的組用java正則表達式
- 9. Python正則表達式出現在括號外多個出現
- 10. 在Perl中的正則表達式由括號括起來
- 11. 正則表達式 - 在圓括號和括號內捕獲任何東西
- 12. Perl正則表達式捕獲分組
- 13. 正則表達式:捕獲組(Perl的)
- 14. 在Perl中匹配n個圓括號正則表達式
- 15. Perl:如何匹配正則表達式中的括號?
- 16. 多個正則表達式捕獲
- 17. 如何在正則表達式中捕獲多個組?
- 18. Perl的正則表達式捕獲的多個實例
- 19. 從相同的Perl正則表達式捕獲多個匹配?
- 20. 括號正則表達式
- 21. 正則表達式 - 括號
- 22. 正則表達式括號
- 23. 確定在javascript正則表達式中有多少個捕獲組?
- 24. 如何在R的正則表達式中逸出閉括號「]」
- 25. 正則表達式從字符串中有多個方括號
- 26. Javascript - 正則表達式尋找多個圓括號匹配
- 27. R中的正則表達式組捕獲多個捕獲組
- 28. Perl的正則表達式和捕獲緩衝編號
- 29. 如何從同一個Perl正則表達式捕獲多個匹配?
- 30. 正則表達式,括號之間的捕獲,javascript
這將有助於如果你能告訴我們你爲什麼需要這些信息 - 即你有什麼打算使用它。 – 2009-05-27 10:32:54