要求是这样的
1.中国共产党成立于哪一年?(A)
A.1921年
B.1922年
C.1927年
D.1949年
          
2.中国最后一个朝代是哪个朝代?(B)
A.清朝
B.明朝
C.宋朝这只是试题的一部分
要求写一个正则表达式把试题分组,也就是获得这些试题
我写了一个正则表达式 只能匹配前面一段
我写的 /(?:((?:\d+\.)?.+\([A-F]\)\n(?:[A-F]\..+\n*)+)\n*)+/
那位大神帮我看些 谢谢啦

解决方案 »

  1.   

    估计你应该走了弯路了你这些试题在页面上,肯定有个容器去放吧?
    <div id="test">
        <h2>1.中国共产党成立于哪一年?(A)</h2>
        <ul>
            <li>A.1921年</li>
            <li>B.1922年</li>
            <li>C.1927年</li>
            <li>D.1949年</li>
        </ul>    <h2>2.中国最后一个朝代是哪个朝代?(B)</h2>
        <ul>
            <li>A.清朝</li>
            <li>B.明朝</li>
            <li>C.宋朝</li>
        </ul>
    </div>
      

  2.   

    不很明白你的意思
    要获得的话直接.innerHTML不可以吗?
      

  3.   

    我假如你的那些试题页面中就这个样子:
    <div id="divtest">
    1.中国共产党成立于哪一年?(A)
    A.1921年
    B.1922年
    C.1927年
    D.1949年
        
    2.中国最后一个朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    </div>
    那你就使用下面的方法去获取
    <script type="text/javascript">
    window.onload=function(){
        var _html=document.getElementById("divxzc").innerHTML;
        var re=/(\S+)?/g;
        arr =_html.match(re);
        for(i=0;i<arr.length;i++)
        {  
            alert(arr[i])
        }
    }</script>如果你的试题在页面中不是那个样子,那你就贴出代码来
      

  4.   

    刚刚写错了那个层的ID,重发一次。。我假如你的那些试题页面中就这个样子:
    <div id="divtest">
    1.中国共产党成立于哪一年?(A)
    A.1921年
    B.1922年
    C.1927年
    D.1949年
        
    2.中国最后一个朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    </div>
    那你就使用下面的方法去获取<script type="text/javascript">
    window.onload=function(){
        var _html=document.getElementById("divtest").innerHTML;
        var re=/(\S+)?/g;
        arr =_html.match(re);
        for(i=0;i<arr.length;i++)
        {  
            alert(arr[i])
        }
    }</script>
      

  5.   

    你如果不使用后面的for循环打印出来也可以,就直接
    alert(arr);//这个可以得到所有的试题题目以逗号连接起来的一个字符串
      

  6.   

    那用我的方法就可以了呀,我在前面3楼和5楼已经贴了代码呀<script type="text/javascript">
    window.onload=function(){
        var _html=document.getElementById("你文本框的ID").value;
        var re=/(\S+)?/g;
        arr =_html.match(re);
        alert(arr);//这个可以得到所有的试题题目以逗号连接起来的一个字符串
        for(i=0;i<arr.length;i++)
        {  
            alert(arr[i]);//这样是得到一条一条的
        }
    }
    </script>
      

  7.   

    我那方法的功能只是把试题的题目单独提出来,并不要求固定选项什么的。你到底是想要什么样子?
    1.中国共产党成立于哪一年?(A)
    A.1921年
    B.1922年
    C.1927年
    D.1949年
        
    2.中国最后一个朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    就以这个为例你提完之后,你想得到什么?你描述的那个样子,我以为你只要题目
      

  8.   

    以你的例子来说,我那个功能只是得到以下两项信息,跟你的选项固定不固定没什么关系,这可能不是你需要的
    1.中国共产党成立于哪一年?和 2.中国最后一个朝代是哪个朝代?    
    所以,我就让你以这个为例,你想得到什么?
    1.中国共产党成立于哪一年?(A)
    A.1921年
    B.1922年
    C.1927年
    D.1949年
        
    2.中国最后一个朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝具体点,把你想要的写出来,你不要再描述了,你描述不清楚
    比如,我想得到:
    问题:1.中国共产党成立于哪一年?它的答案:1921年
    类似的写出来
      

  9.   

    1.中国共产党成立于哪一年?(A)
    A.1921年
    B.1922年
    C.1927年
    D.1949年
    你想将:中国共产党成立于哪一年?这个“题目”,以及它对应的“四个选项[这选项是要分开呢?还是要合在一起呢?]”。以及“答案是哪一个”。都想分别得到?
      

  10.   

    完全用正则取出来,我搞不了。给你写个函数吧
    <script type="text/javascript">
    function getQuestions(){
        var _html=document.getElementById("regtext").value;//得到所有试题
        var re=/([\n\r])+(\d)/g;
        _html =_html.replace(re,'|$2');//每组最后一个选项后的换行替换为|号
        var arr=_html.split('|');//开始分组
        for(i=0;i<arr.length;i++)
        {  
            (function(index){
                var opts='';
                var optsarr=arr[index].split(/\r?\n/);
                for(j=1;j<optsarr.length;j++)
                {
                    opts+=opts.length==0?optsarr[j]:','+optsarr[j];//得到选项列表
                }
                var re2=/[A-Z]/g;
                var answer=re2.exec(optsarr[0]);//得到答案
                var name=optsarr[0].match(/(\S+)?/g);//得到带序号的题目名称
                alert("题目:"+name+"\n选项列表:"+opts+"\n答案:"+answer);
            })(i)
           
        }
    }
    </script>
    <textarea id="regtext" cols="50" rows="50">
    1.中国共产党成立于哪一年?(A)
    A.1921年
    B.1922年
    C.1927年
    D.1949年
    2.中国最后一个朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    D.清朝
    E.明朝
    F.宋朝
    3.中国最后一个xxx朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    4.中国最后一个ccccc朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    </textarea><input type="button" onclick="getQuestions()" value="获取试题" />
      

  11.   

    你写的正则在我这里不行。
    我给你写了一个
     function test() {
                var reg = /\d+[\..][\s\S]+?\([^\)]+?\)\s+?(?:[A-Z][\..][^\s]+?\s+)+/g;
                var content = "你的试题"
                alert(content.match(reg)[0]);
            }content.match(reg)[0]   这是第一题及内容,后面的类推。
      

  12.   

    你如果只是要试题单纯的分个组,那是很简单的事
    <script type="text/javascript">
    function getQuestions(){
        var _html=document.getElementById("regtext").value;//得到所有试题
        var re=/([\n\r])+(\d)/g;
        _html =_html.replace(re,'|$2');//每组最后一个选项后的换行替换为|号
        var arr=_html.split('|');//开始分组
        for(i=0;i<arr.length;i++)
        {  
            alert(arr[i]);//这就是每一组的试题:下面被注释掉的代码是得到分组后的明细,包括题目名称,题目选项,题目答案
    /* 
            (function(index){
                var opts='';
                var optsarr=arr[index].split(/\r?\n/);
                for(j=1;j<optsarr.length;j++)
                {
                    opts+=opts.length==0?optsarr[j]:','+optsarr[j];//得到选项列表
                }
                var re2=/[A-Z]/g;
                var answer=re2.exec(optsarr[0]);//得到答案
                var name=optsarr[0].match(/(\S+)?/g);//得到带序号的题目名称
                alert("题目:"+name+"\n选项列表:"+opts+"\n答案:"+answer);
            })(i)
    /*
           
        }
    }
    </script>
    <textarea id="regtext" cols="50" rows="50">
    1.中国共产党成立于哪一年?(A)
    A.1921年
    B.1922年
    C.1927年
    D.1949年
    2.中国最后一个朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    D.清朝
    E.明朝
    F.宋朝
    3.中国最后一个xxx朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    4.中国最后一个ccccc朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    </textarea><input type="button" onclick="getQuestions()" value="获取试题" />
      

  13.   

    选项数不定怎么不行?
    for(;;){//这个循环遍历每一行
    if(这行的第一个非空白字符是数字) {
        把这行当作问题Q;
        for(;;)//这个一直循环到某行第一个非空白字符是非字母(或者是数字)为止
        if(下一行第一个非空白字符是字母){
            把行看作是问题Q的选项;
        }
        else{break;如果不是字母开头就结束循环}
    }
    }
      

  14.   


    <html>
    <body>
    <textarea id="regtext" cols="50" rows="50">
    1.中国共产党成立于哪一年?(A)
    A.1921年
    B.1922年
    C.1927年
    D.1949年
    2.中国最后一个朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    D.清朝
    E.明朝
    F.宋朝
    3.中国最后一个xxx朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    4.中国最后一个ccccc朝代是哪个朝代?(B)
    A.清朝
    B.明朝
    C.宋朝
    </textarea>
    <script type="text/javascript">
    var text = document.getElementById("regtext").value;
    var qa = text.split("\n");
    var QA = [],j=-1;//QA存储问题组,j指示当前的问题组for(var i=0;i < qa.length;i++){
      var line = qa[i];
      if(parseInt(line.substr(0,1))){
        j++;//如果是数字开头就将这行存储到QA的下一个元素
        QA[j] = line + "\n";
      }
      else{
        QA[j] += line+"\n";//否则把这行当作当前问题的选项
      }
    }for(var i = 0; i < QA.length;i++){//循环输出问题组
      alert(QA[i]);
    }
    </script></body>
    </html>