捕獲多組考慮下面的代碼:正則表達式:使用量詞
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
var str = '<12> rnbqkb-r Rnbq-b-r ';
var pat1 = new RegExp('^\\<12\\> ([rnbqkpRNBQKP-]{8}) ([rnbqkpRNBQKP-]{8})');
var pat2 = new RegExp('^\\<12\\> ([rnbqkp RNBQKP-]{8}){2}');
var pat3 = new RegExp('^\\<12\\> ([rnbqkp RNBQKP-]{8}){2}?');
document.write(str.match(pat1));
document.write('<br />');
document.write(str.match(pat2));
document.write('<br />');
document.write(str.match(pat3));
</script>
</body>
</html>
產生
<12> rnbqkb-r Rnbq-b-r,rnbqkb-r,Rnbq-b-r
<12> rnbqkb-r Rnbq-b-, Rnbq-b-
<12> rnbqkb-r Rnbq-b-, Rnbq-b-
作爲輸出。
爲什麼pat2
和pat3
都不能捕獲第一組rnbqkb-r
?我想捕獲所有組,而不必像pat1
那樣明確地重複它們。
空白包含在圖案中。無論如何,我試過'^ \\ <12\\>([rnbqkp RNBQKP - ] {9}){2}'和'^ \\ <12\\>([rnbqkp RNBQKP - ] {9}){2}?'這兩者都導致<12> rnbqkb-r Rnbq-b-r,Rnbq-b-r。同樣,第一組沒有被捕獲。 – chessweb 2012-08-14 19:58:01
請參閱http://refiddle.com/2xh替換8/9並查看區別。但這不是你問題的根源。 – Prinzhorn 2012-08-14 20:00:18