在设计正则表达式时,字符()紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”,匹配搜索到的、尽可能短的字符串。

题目

在设计正则表达式时,字符()紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”,匹配搜索到的、尽可能短的字符串。


相似考题
更多“在设计正则表达式时,字符()紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”,匹配搜索到的、尽可能短的字符串。”相关问题
  • 第1题:

    正则表达式模块re的match()方法是从字符串的开始匹配特定模式,而search()方法是在整个字符串中寻找模式,这两个方法如果匹配成功则返回match对象,匹配失败则返回空值None。

    此题为判断题(对,错)。


    正确答案:√

  • 第2题:

    ●在字符串的模式匹配过程中,如果模式串的每个字符依次和主事中一个连续的字符序列相等,则称为匹配成功。如果不能在主串中找到与模式串相同的子串,则称为匹配失败。在布鲁特—福斯模式匹配算法(朴素的或基本的模式匹配)中,若主串和模式串的长度分别为n和m(且n远大于m),且恰好在主串末尾的m个字符处匹配成功,则在上述的模式匹配过程中,字符的比较次数最多为(57)。

    (57) A. n*m

    B. (n-m+1)*m

    C. (n-m-1)*m

    D. (n-m)*n


    正确答案:B

  • 第3题:

    正则表达式"^\d{n}$"表示()。

    A、匹配最多n位的字符串

    B、匹配最多n位的数字

    C、只能匹配n位的字符串

    D、只能匹配n位的数字


    参考答案:D

  • 第4题:

    请编写函数fun(),该函数的功能是:移动字符串中的内容,移动的规则是把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。

    例如,字符串中原有的内容为ABCDEFGHIJK,m的值为 3,移动后,字符串中的内容应该是DEFGHIJKABC。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <stdio. h>

    include <string.h>

    define N 80

    void fun (char *w, int m)

    {

    }

    main ( )

    {

    char a[N]= "ABCDEFGHIJK";

    int m;

    printf ("The origina string : \n");

    puts (a);

    printf("\n\nEnter m: ");

    scanf ("%d", &m);

    fun (a, m);

    printf (" \nThe string after moving : \n");

    puts (a);

    printf ("\n\n");

    }


    正确答案:void fun(char *wint m) { int ij; char t; for(i=1;i=m;i++) /*进行m次的循环左移*/ {t=w[0]; for(j=1/w[j]!='\0';j++) /*从第2个字符开始以后的每个字符都依次前移一个字符*/ w[j-1]=w[j]; w[j-1]=t; /*将第1个字符放到最后一个字符中*/ } }
    void fun(char *w,int m) { int i,j; char t; for(i=1;i=m;i++) /*进行m次的循环左移*/ {t=w[0]; for(j=1/w[j]!='\0';j++) /*从第2个字符开始以后的每个字符都依次前移一个字符*/ w[j-1]=w[j]; w[j-1]=t; /*将第1个字符放到最后一个字符中*/ } } 解析:我们在学习C语言的时候,应该广泛地应用到循环的方法,本题应采用“循环左移”的算法。即从第2个字符开始以后的每个字符都依次前移一个字符,而原来的第1个字符放在串中的最后一个字符。当要平移m个字符时,则要进行m次的循环左移。内嵌的循环的作用是完成从第2个字符开始以后的每个字符都依次前移一个字符,w[j-1]=t的作用是将第1个字符放到最后一个字符中。

  • 第5题:

    设主串长为n,模式串长为m(m≤n),则在匹配失败情况下,朴素匹配算法进行的无效位移次数为 ( )

    A.m

    B.n-m

    C.n-m+1

    D.n


    正确答案:C

  • 第6题:

    若目标串的长度为n,模式串的长度为[n/3],则执行模式匹配算法时,在最坏情况下的时间复杂度是( )。

    A.O(1)

    B.O(n)

    C.O(n2)

    D.0(n3)


    正确答案:C
    解析:在主串中可能存在多个模式串“部分匹配”的子串,因而引起数次回溯,若除了最后一次匹配,其他比较每次都需要回溯,则循环次数的数量级为n2

  • 第7题:

    阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。
    [说明]
    函数removeDuplicates(chai *str)的功能是移除给定字符串中的重复字符,使每种字符仅保留一个,其方法是:对原字符串逐个字符进行扫描,遇到重复出现的字符时,设置标志,并将其后的非重复字符前移。例如,若str指向的字符串为"aaabbbbscbsss",则函数运行后该字符串为"absc"。

    [C代码] voidremoveDuplicates(char *str) { inti,len=strlen(str); /*求字符串长度*/ if(______)return; /*空串或长度为1的字符串无需处理*/ for(i=0;i<len;i++){ int flag=0; /*字符是否重复标志*/ int m; for(m=______; m<len;m++){ if(Str[i]==str[m]){ ______; break; } } if (flag) { int n,idx=m; /*将字符串第idx字符之后、与str[i]不同的字符向前移*/ for(n=idx+1; n<len; n++) if(Str[n]!=str[i]){ str[idx]=str[n];______; } str[______]='\0'; /*设置字符串结束标志*/ } } }


    答案:
    解析:
    len<2 或len<=1 或等价表示
    i+1 或等价表示
    flag=1 或给flag赋值为任何一个不是0的值
    idx++ 或idx=idx+1 或等价表示
    idx 或等价表示

  • 第8题:

    正则表达式对象的match()方法可以在字符串的指定位置开始进行指定模式的匹配。


    正确答案:正确

  • 第9题:

    正则表达式模块re的()方法用来在字符串开始处进行指定模式的匹配。


    正确答案:match()

  • 第10题:

    单选题
    下列正则表达式量词符号与含义不匹配的是()
    A

    {n,}:至少出现 n 次

    B

    {n,m}:出现 m-n 次

    C

    ?:出现 0-1 次

    D

    *:出现任意次


    正确答案: B
    解析: 暂无解析

  • 第11题:

    问答题
    规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串中尾部的*号不多于n个若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。例如,字符串中的内容为“****A*BC*DEF*G*******”,若n的值为4,删除后,字符串中的内容应;“****A*BC*DEF*G****”;若n的值为7,则字符串中的内容仍为“****A*BC*DEF*G*******”。n的值在:函数中输入。编写函数时,不得使用C语言提供的字符串函数。  注意:部分源程序给出如下。  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include void fun(char *a,int n){}main(){ char s[81]; int n; printf(Enter a string:); gets(s); printf(Enter n:); scanf(%d,&n); fun(s,n); printf(The string after deleted:); puts(s);}

    正确答案:

    void fun(char *a,int n)
    {
    int i=0,k=0;
    char *p,*t;
    p=t=a;
    while(*t)
    t++;
    t--;
    while(*t=='*')
    {
    k++;
    t--;
    }
    if(k>n)
    {
    while(*p&&p<t+n+1)
    {
    a[i]=*p;
    i++;
    p++;
    }
    a[i]='\0';
    }
    }
    解析: 通过第一个while循环统计出字符串的有效长度,不包括最后的结束符;第二个while循环统计字符串尾部*号的个数,循环结束时,k值记录了原字符串结尾星号的数目,t指向字符串中最后一个不为星号的字符的下标。然后通过if语句比较尾部*号数是否多于n个,若大于则保留n个*号和其余字符,总共需要保留的字符数是t+n+1,1是指最后的结束符。

  • 第12题:

    填空题
    正则表达式模块re的()方法用来在字符串开始处进行指定模式的匹配。

    正确答案: match()
    解析: 暂无解析

  • 第13题:

    在设计正则表达式时,字符_______紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”,匹配搜索到的、尽可能短的字符串。


    正确答案:?

  • 第14题:

    以下关于正则表达式的说法,不正确的是()。

    A、正则表达式是对字符串操作的一种逻辑公式

    B、正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串

    C、主流开发语言C++、Java均不支持正则表达式

    D、正则表达式的使用非常灵活性,逻辑性和功能性非常强


    参考答案:C

  • 第15题:

    以下字符串能匹配正则表达式"^.{3}$”的是()。

    A、a

    B、ab

    C、abc

    D、abcd


    参考答案:C

  • 第16题:

    请编写函数fun(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按J顷序合并组成一个新的字符串。

    例如,若字符串数组中的M个字符串为

    AAAA

    BBBBBBB

    CC

    则合并后的字符串内容应该是AAAABBBBBBBCC

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <conio. h>

    define M 3

    define N 20

    void fun (char a [M] [N], char *b)

    {

    }

    main ( )

    {

    char w [M] [N] ={"AAAA", "BBBBBBB", "CC"}, i;

    char a[100]={" "};

    printf ("The string: \n ");

    for (i=0; i<M; i++)

    puts (w[i]);

    printf (" \n ");

    fun (w, a);

    printf ("The A string: \n ");

    printf("%s ",a);

    printf("\n\n ");

    }


    正确答案:void fun (char a [M] [N] char *b) { int i j k=0; for (i=0; iM; i ++ ) /*将字符串数组中的M个字符串按顺序存入一个新的字符串*/ for(j=0;a[i] [j] !='\0';j++) b [k++]=a[i] [j]; b[k]='\0'; /*在字符串最后加上结束标志符*/ }
    void fun (char a [M] [N] ,char *b) { int i, j, k=0; for (i=0; iM; i ++ ) /*将字符串数组中的M个字符串,按顺序存入一个新的字符串*/ for(j=0;a[i] [j] !='\0';j++) b [k++]=a[i] [j]; b[k]='\0'; /*在字符串最后加上结束标志符*/ } 解析:本程序中for(i=0;iM;i++)循环的作用是用于对二维数组行的控制,第2个循环的作用是从同一行中取出字符并存放到一维数组b中,语句是b[k++]=a[i][j];。

  • 第17题:

    ● 在字符串的模式匹配过程中,如果模式串的每个字符依次和主事中一个连续的字符序列相等,则称为匹配成功。如果不能在主串中找到与模式串相同的子串,则称为匹配失败。在布鲁特—福斯模式匹配算法(朴素的或基本的模式匹配)中,若主串和模式串的长度分别为n和m(且n远大于m),且恰好在主串末尾的m个字符处匹配成功,则在上述的模式匹配过程中,字符的比较次数最多为(57)。 A.n*m B.(n-m+1)*m C.(n-m-1)*m D.(n-m)*n


    正确答案:B
    试题57分析本题主要考查字符串的匹配。在本题的描述中,告诉我们是在主串末尾的m个字符处匹配成功,那么在这之前,从左到右依次匹配了n-m次,且都失败了,最坏的情况,就是每次匹配都是匹配到最后一个字符不符合,因此每次匹配的比较次数就是子串的长度,即m。而匹配成功时,一共也比较了m次。所以字符的比较次数最多为(n-m+1)*m次。参考答案(57)B

  • 第18题:

    阅读以下说明和C函数,填补代码中的空缺(1)~(5),将解答填入答题纸的对

    应栏内。

    【说明】

    函数removeDuplicates(char *str)的功能是移除给定字符串中的重复字符,使每种字

    符仅保留一个,其方法是:对原字符串逐个字符进行扫描,遇到重复出现的字符时,设

    置标志,并将其后的非重复字符前移。例如,若str指向的字符串为“aaabbbbscbsss”,

    则函数运行后该字符串为“abse”。

    【c代码】

    void removeDuplicates (char *str)

    int i,len = strlen (str); /*求字符串长度*/

    If( (l) )return;/*空串或长度为1的字符串无需处理*l

    for(i=0;i<len;i++) {

    Int flag =O; /*字符是否重复标志*/

    int m:

    for(m =( 2 ); m<len; m++){

    if(str[i]==str[m] ) {

    __(3)_;break;

    }

    }

    if (flag){

    Int n,idx = m;

    /*字符串第idx字符之后、与str [i]不同的字符向前移*/

    For( n=idx+l; n<len. n++)

    if ( str[n]!= str[i]) {

    str[idx]= str[n]; (4);

    }

    Str[(5)]=\0; /* 设置字符串结束标志*/

    }

    }

    }


    正确答案:
    本题考查C语言基本应用。题目要求在阅读理解代码说明的前提下完善代码。字符串的运算处理是c程序中常见的基本应用。根据注释,空(1)处应填入的内容很明确,为“len=1”或其等价表示。要消除字符串中的重复字符,需要扫描字符串,这通过下面的代码来实现:For(i=0;ilen;i++){intflag=Oj;/*字符是否重复标志*/intm:for(m=(2);m<len;m++)(if(str[i]==str[m]{(3),break;}*}......上面代码中.循环变量i用于顺序地记下字符串中每个不同字符首次出现的位置,那么后面的处理就是从i的下一个位置开始,考查后面的字符中有没有与它相同的(str[i]=sir[m]),因此空(2)应填入“i+l”或其等价表示。显然,当发现了重复字符时,应设置标志,空(3)处应填入“flag=l”或者给flag赋值为任何一个不是0的值。根据说明,发现与str[i]相同的第一个字符str[m]后,需要将其后所有与str[i]不同的字符前移,以覆盖重复字符str[m],对应的代码如下;if(flag){intn,idx=m;/*将字符串第idx字符之后、与str[1]不同的字符向前移*/for(n=idx+l,n<len.n++)if(str[n]!=str[i]}{str[idx]=str[n];(4)}Str[(5)]=’\0’;/*设置字符串结束标志*/}初始时,idx等于m,使str[n]覆盖str[idx]后,需要将idx自增,以便将后面与str[i]不同的字符继续前移,因此空(4)处应填入“idx++”或等价表示。由于后面字符前移了,所以字符串结束标志也需重新设置,空(5)处应填入“idx”。试题二参考答案(1)len2或len=l或等价表示(2)i+1或等价表示(3)flag=l或给flag赋值为任何一个不是O的值(4)idx++或idx=idx+l或等价表示(5)idx或等价表示

  • 第19题:

    下列正则表达式量词符号与含义不匹配的是()

    • A、{n,}:至少出现 n 次
    • B、{n,m}:出现 m-n 次
    • C、?:出现 0-1 次
    • D、*:出现任意次

    正确答案:B

  • 第20题:

    正则表达式’^http’只能匹配所有以’http’开头的字符串。


    正确答案:正确

  • 第21题:

    正则表达式模块re的match()方法是从字符串的开始匹配特定模式,而search()方法是在整个字符串中寻找模式,这两个方法如果匹配成功则返回match对象,匹配失败则返回空值None。


    正确答案:正确

  • 第22题:

    填空题
    在设计正则表达式时,字符()紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”,匹配搜索到的、尽可能短的字符串。

    正确答案: ?
    解析: 暂无解析

  • 第23题:

    填空题
    正则表达式模块re的()方法用来在整个字符串中进行指定模式的匹配。

    正确答案: search()
    解析: 暂无解析

  • 第24题:

    判断题
    正则表达式对象的match()方法可以在字符串的指定位置开始进行指定模式的匹配。
    A

    B


    正确答案:
    解析: 暂无解析