捕获多组考虑下面的代码:正则表达式:使用量词
<!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