精华内容
下载资源
问答
  • 正则匹配
    千次阅读
    2021-01-27 15:47:03
    1. 如何使用正则匹配中文字符,w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时
      匹配中文字符的正则表达式: [u4e00-u9fa5]

       

    2、需要匹配双字节字符,中文也是双字节的字符

    匹配双字节字符(包括汉字在内):[^x00-xff]

    3、可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 更多常用正则表达式匹配规则:

    英文字母:[a-zA-Z]
    
    数字:[0-9]

    4、匹配中文,英文字母和数字及_:

    ^[u4e00-u9fa5_a-zA-Z0-9]+$

    5、同时判断输入长度:

    [u4e00-u9fa5_a-zA-Z0-9_]{4,10}
    
    ^[wu4E00-u9FA5uF900-uFA2D]*$

    6、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:

    ^(?!_)(?!.*?_$)[a-zA-Z0-9_u4e00-u9fa5]+$

    7、 ^ 与字符串开始的地方匹配

    (?!_)  不能以_开头
    
    (?!.*?_$)  不能以_结尾
    
    [a-zA-Z0-9_u4e00-u9fa5]+  至少一个汉字、数字、字母、下划线

    8、$  与字符串结束的地方匹配

    放在程序里前面加@,否则需要\进行转义 @"^(?!_)(?!.*?_$)[a-zA-Z0-9_u4e00-u9fa5]+$"
    
    (或者:@"^(?!_)w*(?<!_)$" 或者 @" ^[u4E00-u9FA50-9a-zA-Z_]+$ " )

    9、只含有汉字、数字、字母、下划线,下划线位置不限:

    ^[a-zA-Z0-9_u4e00-u9fa5]+$

    9、由数字、26个英文字母或者下划线组成的字符串

    ^w+$

    10、2~4个汉字

    @"^[u4E00-u9FA5]{2,4}$";

    11、

    ^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$

     

    更多相关内容
  • 您可能感兴趣的文章:正则表达式匹配任意字符(包括换行符)的写法正则表达式匹配不包含某些字符串的技巧Java正则多字符串匹配替换正则表达式 匹配至少有一个非空白字符并且不超过指定长度匹配任意字符的正则表达式...
  • 主要介绍了js正则匹配出所有图片及图片地址src的方法,涉及javascript正则匹配及页面元素操作的相关技巧,需要的朋友可以参考下
  • 主要介绍了PHP实现正则匹配所有括号中的内容,需要的朋友可以参考下
  • php代码-在线 php 正则表达式在线测试,php正则测试,在线php正则匹配
  • 易语言正则匹配网页链接源码,正则匹配网页链接
  • java 正则匹配所有 {},并取出所有符合的字符串。该项目为普通java项目
  • 让你爱上正则,简单帅气的正则匹配小工具,还等什么赶快下载把,支持各种正则匹配,让你不再为正则感觉头疼
  • 正则匹配邮箱和电话号码和年龄正则匹配邮箱和电话号码和年龄正则匹配邮箱和电话号码和年龄正则匹配邮箱和电话号码和年龄正则匹配邮箱和电话号码和年龄
  • 易语言正则万能匹配

    2020-07-22 19:00:57
    易语言正则万能匹配源码,正则万能匹配,正则元字符转义,文本_替换,创建,取正则文本,替换,取匹配数量,取匹配文本,取子匹配文本,取子匹配数量
  • golang正则匹配使用

    千次阅读 2022-04-15 09:50:23
    affected_entity := '受影响实体1CPE:/a:vim:vim:-:::2CPE:/a:vim:vim:...)") matchArr := compileRegex.FindAllString(affected_entity,-1) 正则匹配测试界面 Regex正则表达式在线测试、生成、解析工具 - GoRegex.cn
    affected_entity := '受影响实体</span><span class="ant-table-column-sorter"></span></div></span></th></tr></thead><tbody class="ant-table-tbody"><tr data-row-key="0" class="ant-table-row ant-table-row-level-0"><td class="ant-table-row-cell-break-word" style="text-align:center;">1</td><td>CPE:/a:vim:vim:-:::</td></tr><tr data-row-key="1" class="ant-table-row ant-table-row-level-0"><td class="ant-table-row-cell-break-word" style="text-align:center;">2</td><td>CPE:/a:vim:vim:5.6:::</td></tr><tr data-row-key="2" class="ant-table-row ant-table-row-level-0"><td class="ant-table-row-cell-break-word" style="text-align:center;">3</td><td>CPE:/a:vim:vim:6.1:::</td></tr><tr data-row-key="3" class="ant-table-row ant-table-row-level-0"><td class="ant-table-row-cell-break-word" style="text-align:center;">4</td><td>CPE:/a:vim:vim:6.3:::</td></tr><tr data-row-key="4" class="ant-table-row ant-table-row-level-0"><td class="ant-table-row-cell-break-word" style="text-align:center;">5</td><td>CPE:/a:vim:vim:6.4:::</td></tr></tbody></table></div></div></div></div></div></div>'
    
    //这个只能匹配到一个
    compileRegex := regexp.MustCompile("</td><td>(.*?)</td></tr>")
    matchArr := compileRegex.FindStringSubmatch(affected_entity,-1)
    //这个可以匹配到所有
    compileRegex := regexp.MustCompile("</td><td>(.*?)</td></tr>")
    matchArr := compileRegex.FindAllString(affected_entity,-1)

    正则匹配测试界面

    Regex正则表达式在线测试、生成、解析工具 - GoRegex.cn

    展开全文
  • 匹配地名: 不多说,上代码 def Match_Address(data): import re PATTERN1 = r'([\u4e00-\u9fa5]{2,5}?(?:省|自治区|市)){0,1}([\u4e00-\u9fa5]{2,7}?(?:区|县|州)){0,1}([\u4e00-\u9fa5]{2,7}?(?:镇)){0,1}([\u4...

    匹配地名:
    不多说,上代码

    
    def Match_Address(data):
        import re
        PATTERN1 = r'([\u4e00-\u9fa5]{2,5}?(?:省|自治区|市)){0,1}([\u4e00-\u9fa5]{2,7}?(?:区|县|州)){0,1}([\u4e00-\u9fa5]{2,7}?(?:镇)){0,1}([\u4e00-\u9fa5]{2,7}?(?:村|街|街道)){0,1}([\d]{1,3}?(号)){0,1}'
        # \u4e00-\u9fa5 匹配任何中文
        # {2,5} 匹配2到5次
        # ? 前面可不匹配
        # (?:pattern) 如industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。意思就是说括号里面的内容是一个整体是以y或者ies结尾的单词
        pattern = re.compile(PATTERN1)
        p1 = ''
        p2 = ''
        p3 = ''
        p4 = ''
        p5 = ''
        p6 = ''
        m = pattern.search(data)
        if not m:
            print('None')
        if m.lastindex >= 1:
            p1 = m.group(1)
        if m.lastindex >= 2:
            p2 = m.group(2)
        if m.lastindex >= 3:
            p3 = m.group(3)
        if m.lastindex >= 4:
            p4 = m.group(4)
        if m.lastindex >= 5:
            p5 = m.group(5)
        if m.lastindex >= 6:
            p6 = m.group(6)
        out = '%s|%s|%s|%s|%s|%s' % (p1, p2, p3, p4, p5, p6)
        return out
    if __name__ =='__main__':
        data=str(input("请输入文本:"))
        out=Match_Address(data)
        print(out)
    
    

    结果:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    讲解

    \u4e00-\u9fa5 匹配任何中文 :[\u4e00-\u9fa5]{2,5} 匹配任意2到5个中文
    {2,5} 匹配2到5次
    ? 表示前面可不匹配
    (?:pattern) 如industr(?:y|ies) 就是一个比 ‘industry|industries’ 更简略的表达式。意思就是说括号里面的内容是一个整体是以y或者ies结尾的单词。
    ?:省|自治区|市 :表示可以匹配省,也可以匹配自治区,也可以匹配市
    元字符( “( )” ),用来表示一个group的开始和结束。

    展开全文
  • C++使用正则匹配

    千次阅读 多人点赞 2020-08-12 20:26:31
    C/C++可以用正则表达式吗? 答案肯定是可以的,那么,今天一个简单的输入scanf带你走进正则的世界 #include<stdio.h> int main() { printf("input digate:"); char str[100]; scanf("%[0-9]", str); //输入...

    在这里插入图片描述

    来源:微信公众号「编程学习基地」

    C/C++可以用正则表达式吗?

    答案肯定是可以的,那么,今天一个简单的输入scanf带你走进正则的世界

    #include<stdio.h>
    int main()
    {
    	printf("input digate:");
    	char str[100];
    	scanf("%[0-9]", str);	//输入123456abc
    	printf("%s", str);		//打印123456
    }
    

    在scanf时输入任何一串以数字开始的字符,那么str里面只会保存字符里面的第一串数字

    input digate:123456abc
    123456
    

    先给出一些简单的正则

    限定符含义
    %[0-9]数字集合
    %[^0-9]非数字集合
    %[a-zA-Z]字母集合
    %[^a-zA-Z]非字母集合

    预热好了,正题开始…

    若要判断一个输入的QQ号是否有效,如何判断?

    判断步骤:

    1. 长度大于5,小于等于11;
    2. 首位不能为0;
    3. 是否为纯数字?

    C++string处理:

    #include<iostream>
    using namespace std;
    int main()
    {
    	string qq = "7466a2063";
    	if (qq.length() >= 5 && qq.length() <= 11)
    	{
    		// 2. 判断是否非'0'开头
    		if (qq[0] != '0')
    		{
    			// 3. 判断是否为纯数字
    			for each (char var in qq)
    			{
    				cout << var;
    				if (var < '0' || var > '9')
    				{
    					cout << "不存在" << endl;
    					return 0;
    				}
    			}
    			cout << "存在" << endl;
    		}
    		else
    		{
    			cout << "不存在" << endl;
    		}
    	}
    	else
    	{
    		cout << "不存在" << endl;
    	}
    	return 0;
    }
    

    虽然功能实现了但是非常麻烦

    正则处理:

    #include<iostream>
    #include<regex>
    using namespace std;
    int main()
    {
    	regex qq_reg("[1-9]\\d{4,11}");
    	string qq = "746632063";
    	smatch result;
    	bool ret = regex_match(qq, result, qq_reg);
    	cout << (ret ? "存在" : "不存在") << endl;
    	return 0;
    }
    

    笑出了猪叫,一行正则匹配就解决了

    是不是很方便呢?那么接下来便来看看如何使用「正则表达式」。

    正则程序库(regex)

    「正则表达式」就是一套表示规则的式子,专门用来处理各种复杂的操作。

    std::regex是C++用来表示「正则表达式」(regular expression)的库,于C++11加入,它是class std::basic_regex<>针对char类型的一个特化,还有一个针对wchar_t类型的特化为std::wregex。

    正则文法(regex syntaxes)

    std::regex默认使用是ECMAScript文法,这种文法比较好用,且威力强大,常用符号的意义如下:

    符号意义
    ^匹配行的开头
    $匹配行的结尾
    .匹配任意单个字符
    […]匹配[]中的任意一个字符
    (…)设定分组
    \转义字符
    \d匹配数字[0-9]
    \D\d 取反
    \w匹配字母[a-z],数字,下划线
    \W\w 取反
    \s匹配空格
    \S\s 取反
    +前面的元素重复1次或多次
    *前面的元素重复任意次
    ?前面的元素重复0次或1次
    {n}前面的元素重复n次
    {n,}前面的元素重复至少n次
    {n,m}前面的元素重复至少n次,至多m次
    |逻辑或

    上面列出的这些都是非常常用的符号,靠这些便足以解决绝大多数问题了。

    匹配(Match)

    字符串处理常用的一个操作是「匹配」,即字符串和规则恰好对应,而用于匹配的函数为std::regex_match(),它是个函数模板

    bool regex_match(string s,regex pattern)
    bool regex_match(string s,smatch result,regex pattern)
    bool regex_match(s.cbegin()+i,s.cend(),smatch result,regex pattern)  //从字符串的某个位置开始匹配?
    

    我们直接来看例子:

    #include<iostream>
    #include<regex>
    using namespace std;
    int main()
    {
    	/*匹配*/
    	regex pattern("^1[3578]\\d{9}$");	//1开头,后面[3578]中的一个,九个数字
    	string s = "17779637570";
    	smatch result;
    	bool ismatch = regex_match(s, result, pattern);
    	if (ismatch)
    	{
    		cout << "匹配成功:" << result[0] << endl;
    	}
    	else
    		cout << "匹配失败" << endl;
    	return 0;
    }
    
    匹配成功:17779637570
    

    匹配成功并返回匹配到的结果

    搜索(Search)

    「搜索」与「匹配」非常相像,其对应的函数为std::regex_search,也是个函数模板,用法和regex_match一样,不同之处在于「搜索」只要字符串中有目标出现就会返回,而非完全「匹配」。

    bool regex_search(string s,regex pattern)
    bool regex_search(string s,smatch result,regex pattern)
    bool regex_search(s.cbegin()+i,s.cend(),smatch result,regex pattern)  //从字符串的某个位置开始匹配?
    

    搜索给定字符串中是否存在与模式匹配的子串,如果存在则返回true。

    同样可以用smatch result记录结果,但不同的是result[0]记录的是整个字符串中从左往右第一个匹配模式的子串。

    假如有多个子串符合模式,若想知道result[0]中存储的是第几个子串,可以用result.position()函数,返回数从0开始。

    我们直接来看例子:

    #include<iostream>
    #include<regex>
    using namespace std;
    int main()
    {
    	regex pattern("\\d+");	/*匹配一个到无穷个数字*/
    	string s = "51x41+(5-13/2)x3a";
    	smatch result;
    	string::const_iterator iter_begin = s.cbegin();
    	string::const_iterator iter_end = s.cend();
    	while (regex_search(iter_begin, iter_end, result, pattern))
    	{
    		cout << "查找成功:" << result[0] << endl;
    		cout << "查找结果子串的在源串中的迭代器位置" << *result[0].first << endl;
    		cout << "查找结果子串的在源串后面的位置" << *result[0].second << endl;
    		iter_begin = result[0].second;	//更新迭代器位置
    	}
    	return 0;
    }
    
    查找成功:51
    查找结果子串的在源串中的迭代器位置5
    查找结果子串的在源串后面的位置x
    查找成功:41
    查找结果子串的在源串中的迭代器位置4
    查找结果子串的在源串后面的位置+
    查找成功:5
    查找结果子串的在源串中的迭代器位置5
    查找结果子串的在源串后面的位置-
    查找成功:13
    查找结果子串的在源串中的迭代器位置1
    查找结果子串的在源串后面的位置/
    查找成功:2
    查找结果子串的在源串中的迭代器位置2
    查找结果子串的在源串后面的位置)
    查找成功:3
    查找结果子串的在源串中的迭代器位置3
    查找结果子串的在源串后面的位置a
    

    替换(Replace)

    最后一种操作称为「替换」,即将正则表达式内容替换为指定内容,regex库用模板函数std::regex_replace提供「替换」操作。

    string regex_replace(string s,regex p,string replace_str)	//有其他重载用法
    

    现在,给定一个数据为"he…ll…o, worl…d!", 思考一下,如何去掉其中误敲的“.”?

    #include<iostream>
    #include<regex>
    using namespace std;
    int main()
    {
    	char data[] = "he...ll..o, worl..d!";
    	regex reg("\\.");	//正则匹配点.
    	cout << regex_replace(data, reg, "");	//将正则匹配到的点替换成无,即删除点
    	return 0;
    }
    
    hello, world!
    

    删除了没必要的点,是不是贼方便…

    对字符串data中与模式匹配的所有子串进行相应的字符串替换,替换字符串引用匹配子串中的内容,引用方法如下

    转义序列替换为
    $n匹配第n个捕捉组的字符串。例如$l表示第一个捕捉组,$2表示第二个,依此类推
    $&匹配整个正则表达式的字符串,等同于$0
    $`在源字符串中,在匹配正则表达式的子字符串左侧的部分
    $’在源字符串中,在匹配正则表达式的子字符串右侧的部分
    $$美元符号
    #include<iostream>
    #include<regex>
    using namespace std;
    int main()
    {
    	char data[] = "001-Neo,002-Lucia";
    	regex reg("(\\d+)-(\\w+)");
    	cout << regex_replace(data, reg, "$1 name=$2");
    	return 0;
    }
    
    001 name=Neo,002 name=Lucia
    
    展开全文
  • 正则匹配`re.findall`二、正则表达式(一)基本内容1.正则表达式修饰符——可选标志2.正则表达式模式(二)常见表达式函数1. `re.match`2.`re.search`3. `re.sub`4.`re.compile`5.`re.findall`6.`re.aplit`...
  • php(正则匹配)

    千次阅读 2020-09-16 13:30:37
    一、正则表达式基础内容 注: 1、通用原子: \d : 数字。 \D : 除了数字。 \w : 数字,字母,下划线。\W : 除了数字,字母,下划线。 \s : 空白符 。 \S : 除了空白符 。 2、元字符: . :除了换行以外的所有字符 ...
  • 1.正则匹配数字,\为转义字符,d+为匹配一次或多次 如下所示:返回的结果为列表 2.正则匹配小数 如下所示,返回的结果125.6为字符串 总结  以上所述是小编给大家介绍的Python正则表达式匹配数字和小数的方法,希望...
  • VSCode中常用正则匹配

    千次阅读 2021-08-09 14:55:09
    日常开发中,经常会遇到需要注释先前遗留的大量console相关的输出日志代码,在vscode中可以使用当前页搜索(CTRL + F)或全局搜索的方式...3、匹配当前页所有console.***相关未被注释的代码 ^(?!\/\/)(\s)*console...
  • 正则表达式,正则匹配冒号

    千次阅读 2020-12-20 13:36:42
    例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配...
  • (\p{IsScript} for Unicode scripts) 使用qt框架下的QJSEngine类: 在c++中运行js脚本执行正则匹配: #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { ...
  • python 正则匹配

    千次阅读 2019-06-01 16:15:13
    在python 中,正则匹配用到的还是挺多的,下面总结一下常用的一些正则匹配: 精确匹配: \d可以匹配一个数字, \w可以匹配一个字母或数字, . 匹配任意的单个字符 \s可以匹配一个空格(也包括Tab等空白符) 变...
  • 易语言正则表达式匹配中文源码,正则表达式匹配中文,搜索
  • Python中的 正则匹配

    万次阅读 2020-05-31 19:09:26
    正则匹配的基本格式 import re ret=re.match("正则表达式","要匹配的字符串") ret.group( ) 提取数据 匹配单个字符: . 匹配任意一个字符(除了\n) [ ] 匹配[ ] 中的 任意一个字符 \d 匹配数字 即 0-9 \D 匹配非...
  • Java中的正则匹配

    千次阅读 2020-07-24 14:58:55
    正则匹配 正则匹配即是在给定字符串中查找符合正则表达式的字符。 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”...
  • 正则匹配回车符

    千次阅读 2021-04-07 16:02:38
    正则匹配回车符 str.replace(/[\r\n]/g, ',')
  • 正则匹配以什么开头、以什么结尾,以非什么开头,以非什么结尾(1)正则匹配以start开始的字符串 (2)正则匹配以非start开始的字符串。 (3)正则匹配以end结束的字符串。 (4)正则匹配以非end结束的字符串...
  • 写个可以匹配一下各种特殊字符的正则表达式 ((?=[\x21-\x7e]+)[^A-Za-z0-9]) x21-\x7e]+)[^A-Za-z0-9]) 这个匹配所有键盘上可见的非字母和数字的符号 var patrn = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~...
  • 主要介绍了java正则表达式匹配网页所有网址和链接文字java正则表达式匹配,需要的朋友可以参考下
  • 正则匹配url 参数

    2020-05-25 11:55:34
    getParam(name){ var reg = new RegExp("(^|&)"+name+"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); var strValue = ""; ... strValue= unescape(r[2]);...
  • 网上能够查到很多匹配汉字的正则 let reg = /[\u4e00-\u9fa5]+/g; console.log(str.match(reg)); // 结果如下 ['上传文件', '你好呀', '我很好'] 从结果可以看出上面写的正则没有匹配到标点符号,,所以将完整的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 531,740
精华内容 212,696
关键字:

正则匹配

友情链接: chiangyung-PAT-master.zip