正则并不适合严格查找子串

正则表达式带有局限性,适合匹配,不适合查找;

原理:正则匹配到子串后,会从子串的结尾处开始继续匹配

比如“aaaca ”中查找所有“aa”的子串,按理来说应该有2个“aa”子串(01、12);然而,全局正则匹配到01位后,继续从2位开始匹配,就会忽略到12位的子串,所以只会匹配到1个子串

    var red = /aa/g;
    console.log(red.exec("aaaca"));     // ["aa", index: 0, input: "aaaca"]
    console.log(red.exec("aaaca"));     // null

解决方式:乖乖用indexOf()吧,不断改变fromIndex

时间: 2024-10-12 00:32:49

正则并不适合严格查找子串的相关文章

传智播客视频学习 ---->>>> 项目开发模型_strstr_while模型(在 str 中查找子串 str2 的出现次数)

在 str 中查找子串 str2 的出现次数 // 参数:1->源字符串,2->查找的字符串,3->计数 int getStringCount(char *strSource, char *strFind, int *nCount) 第三个参数是查找的数量,可以返回查找多个str的数量,查找两个字符串的数量函数返回的是错误码 代码: 1 // 2 // atuo @silent 3 // date 2015/11/23 4 // 5 6 // 在一个字符串中查找另一个字符串出现的次数 7

string截取、替换、查找子串函数,find_first_of 用法

1. 截取子串 s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回 s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回 2. 替换子串 s.replace(pos, n, s1) 用s1替换s中从pos开始(包括0)的n个字符的子串 3. 查找子串 s.find(s1) 查找s中第一次出现s1的位置,并返回(包括0) s.rfind(s1) 查找s中最后次出现s1的位置,并返回(包括0) s.find_first_of

字符串中查找子串

使用C语言编写程序: 1.在字符串中查找一个指定的字符第一次出现的位置,并返回字符所在的位置,如果不存在则返回NULL 具体实现如下: char* strchr(char const *str, int ch) { char* st = (char*)str; while (st) { if (*st == ch) return st; st++; } return NULL; } 2.在字符串中查找一个指定的字符串第一次出现的位置,并返回字符所在的位置,如果不存在则返回NULL 具体实现如下:

正则表达式基础知识及常用表单验证正则(使用时查找为主,需多加基础方法的例子)

一.需要转义的特殊符号,也就是需要在前面添加\:!$ * + = | . ?  \  / [] {}  ^ () 二.正则表达式基本形式及方法:A:re =new RegExp(“a”,“i”);  //new出来的匹配方式B:   re=/a/i ;                            //直接量(更常用) pattern.exec(str)     //返回数组pattern.test(str)       //返回布尔值pattern.toSource(str)    

华为机试—查找子串个数

输入一个字符串,判断有多少个子串. 输入: asdg ds  dga 输出:3 #include <iostream> #include <string> using namespace std; int num_of_sub(char *str) { int len = strlen(str); int count = 0; for(int i= 0;i < len;i++) { if(str[i] != ' ') { for(int j = i;j < len;j+

在字符串中查找子串

#author by changingivan#2016/04/12 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 //char str1[10], str2[10]; 8 string str1,str2; 9 cin>>str1; 10 cin>>str2; 11 char *str3,*str4; 12 str3=const_cas

C#查找子串在原串中出现次数

提供的是一种思路,和具体语言无关. string test = "good good study day day up"; string r = test.Replace("oo",""); int num = (test.Length - r.Length) /"oo".length; Console.WriteLine(num);

查找子串出现次数OC

- (NSInteger)countOfSubstring:(NSString *)substring inString:(NSString *)s{    NSArray *ary=[s componentsSeparatedByString:substring];    NSString *str=[ary componentsJoinedByString:@""];    NSUInteger scount=s.length;    NSUInteger strcount=str

Java中查找子串出现次数

方法一:采用String类中indexOf()方法:public class SubStringCount { public static void main(String[] args) { String str1 = "abcjavanbajavasrcjavammmjava"; String str2 = "java"; int count = 0; int index=str1.indexOf(str2); while(index!=-1){ index =