精华内容
下载资源
问答
  • 正则表达式匹配

    千次阅读 2020-09-04 23:36:09
    有道面试题是正则表达式匹配

    有道面试题是正则表达式匹配

    展开全文
  • 中文正则表达式匹配-正则中文匹配

    万次阅读 多人点赞 2018-05-30 17:13:44
    原文链接:...\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下匹配中文字符的正则表达式: [\u4e00-\u9fa5]或许你也需要匹配双字节字符,中文也是双...
    原文链接:http://caibaojian.com/zhongwen-regexp.html

    这篇文章主要讲如何使用正则匹配中文字符,中文正则表达式的匹配规则不像其他正则规则一样容易记住,下面一起看看这个中文正则表达式是怎么样的。

    \w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下

    匹配中文字符的正则表达式: [\u4e00-\u9fa5]

    或许你也需要匹配双字节字符,中文也是双字节的字符

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

    注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

    更多常用正则表达式匹配规则:

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

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

    //code from http://caibaojian.com/zhongwen-regexp.html
    ^[\u4e00-\u9fa5_a-zA-Z0-9]+$

    同时判断输入长度:·

    [\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}
    
    ^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$

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

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

    其中:

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

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

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

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

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

    ^[a-zA-Z0-9_\u4e00-\u9fa5]+$

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

    ^\w+$

    4、2~4个汉字

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

    5、

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

    用:(Abc)+ 来分析: XYZAbcAbcAbcXYZAbcAb


    来源:前端开发博客
    展开全文
  • 正则表达式匹配规则

    万次阅读 2021-01-15 21:42:49
    正则表达式匹配规则限定符:?(0或1次)限定符:* (0或1次或多次)限定符:+ (1次或多次)限定符:{ } (指定次数)使用 () 实现多个字符的匹配或运算符:|[ ] 定义匹配的字符范围元字符 \d \D \w \W \s \S . \b^...


    注:本博客使用到的正则表达式在线测试工具:https://regex101.com/


    • 限定符:?(0或1次)

    ? 表示其前面的一个字符出现的次数可以为0次或1次(可有可无)

    测试示例:oo?
    在这里插入图片描述


    • 限定符:* (0或1次或多次)

    * 表示其前面的一个字符出现的次数可以为0次或1次或多次

    测试示例:om*o
    在这里插入图片描述


    • 限定符:+ (1次或多次)

    + 表示其前面的一个字符出现的次数可以为1次或多次

    测试示例: om+o
    在这里插入图片描述


    • 限定符:{ } (指定次数)

    可以使用 { } 来指定前一个字符出现的次数范围

    {2}表示出现次数为2次

    {2,4}表示出现的次数为2–4次

    {2,}表示出现的次数为2次或2次以上

    测试示例: om{2}o
    在这里插入图片描述
    测试示例: om{2,4}o
    在这里插入图片描述
    测试示例: om{2,}o
    在这里插入图片描述


    • 使用 () 实现多个字符的匹配

    在这里插入图片描述


    • 或运算符:|

    在这里插入图片描述


    • [ ] 定义匹配的字符范围

    [abc]+ 表示匹配字符abc
    在这里插入图片描述
    [0-5] 表示匹配数字0–5
    [K-X] 表示匹配大写字母K–X
    [d-t] 表示匹配小写字母d–t
    在这里插入图片描述
    使用 ^ 反向匹配
    在这里插入图片描述


    • 元字符 \d \D \w \W \s \S . \b

    \d 代表数字字符,相当于 [0-9]
    在这里插入图片描述
    \D 代表非数字字符,相当于 [^0-9]
    在这里插入图片描述

    \w 代表单词字符(数字、字母、下划线)

    \W 代表非单词字符
    在这里插入图片描述
    \s 代表空白符(空格、Tab、换行符)

    \S 代表非空白字符
    在这里插入图片描述

    . 代表除换行符之外的所有字符
    在这里插入图片描述
    \b 代表单词字符的边界(开头或结尾),它只代表位置,不匹配空格、换行和Tab

    在这里插入图片描述


    • ^ 匹配行首, $ 匹配行尾

    ^ 匹配行首
    在这里插入图片描述
    $ 匹配行尾
    在这里插入图片描述


    • 贪婪匹配与懒惰匹配

    示例1:

    贪婪匹配:尽可能匹配多的字符
    在这里插入图片描述
    懒惰匹配:尽可能匹配少的字符
    在这里插入图片描述
    示例2:

    贪婪模式:
    在这里插入图片描述
    懒惰模式:
    在这里插入图片描述


    • 使用实例

    实例1:匹配所有16进制的RGB颜色值:
    在这里插入图片描述

    实例2:IPv4 地址匹配:

    \b((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b
    

    在这里插入图片描述

    展开全文
  • 1、正则表达式匹配 ~ 区分大小写匹配 ~* 不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 ^ 以什么开头的匹配 $ 以什么结尾的匹配 转义字符。可以转. * ?等 * 代表任意字符 2、文件及目录匹配 ...

    免费视频福利推荐:

    2T学习视频教程+电子书 免费送BAT面试精讲视频,亿级流量秒杀系统,分布式系统架构,中间件消息队列,Python Go入门到精通,Java实战项目,Linux, 网络,MySQL高性能,Redis集群架构,大数据,架构师速成,微服务,容器化Docker K8s, ELK Stack日志系统等免费视频教程!

     

     

    1、nginx配置基础

    1、正则表达式匹配

    ~ 区分大小写匹配

    ~* 不区分大小写匹配

    !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

    ^ 以什么开头的匹配

    $ 以什么结尾的匹配

    转义字符。可以转. * ?等

    * 代表任意字符

    2、文件及目录匹配

    -f和!-f用来判断是否存在文件

    -d和!-d用来判断是否存在目录

    -e和!-e用来判断是否存在文件或目录

    -x和!-x用来判断文件是否可执行

    例:

    location = /

    #匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配

    location ^~ /images/ {

    # 匹配任何已/images/开头的任何查询并且停止搜索。任何正则表达式将不会被测试。

    location ~* .(gif|jpg|jpeg)$ {

    # 匹配任何已.gif、.jpg 或 .jpeg 结尾的请求

    入门

    1、if指令
    所有的Nginx内置变量都可以通过if指令和正则表达式来进行匹配,并且根据匹配结果进行一些操作,如下:

     代码如下 复制代码
    if ($http_user_agent ~ MSIE) {
      rewrite  ^(.*)$  /msie/$1  break;
    }
     
    if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) {
      set  $id  $1;
    }

    使用符号~*和~模式匹配的正则表达式:

    1.~为区分大小写的匹配。
    2.~*不区分大小写的匹配(匹配firefox的正则同时匹配FireFox)。
    3.!~和!~*意为“不匹配的”。
    Nginx在很多模块中都有内置的变量,常用的内置变量在HTTP核心模块中,这些变量都可以使用正则表达式进行匹配。

    2、可以通过正则表达式匹配的指令
    location
    查看维基:location
    可能这个指令是我们平时使用正则匹配用的最多的指令:

     代码如下 复制代码

    location ~ .*.php?$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /data/wwwsite/test.com/$fastcgi_script_name;
            include        fcgi.conf;
        }

    几乎每个基于LEMP的主机都会有如上一段代码。他的匹配规则类似于if指令,不过他多了三个标识符,^~、=、@。并

    且它没有取反运算符!,这三个标识符的作用分别是:

    1.^~ 标识符后面跟一个字符串。Nginx将在这个字符串匹配后停止进行正则表达式的匹配(location指令中正则表达

    式的匹配的结果优先使用),如:location ^~ /images/,你希望对/images/这个目录进行一些特别的操作,如增加

    expires头,防盗链等,但是你又想把除了这个目录的图片外的所有图片只进行增加expires头的操作,这个操作可能

    会用到另外一个location,例如:location ~* .(gif|jpg|jpeg)$,这样,如果有请求/images/1.jpg,nginx如何决

    定去进行哪个location中的操作呢?结果取决于标识符^~,如果你这样写:location /images/,这样nginx会将1.jpg

    匹配到location ~* .(gif|jpg|jpeg)$这个location中,这并不是你需要的结果,而增加了^~这个标识符后,它在匹

    配了/images/这个字符串后就停止搜索其它带正则的location。
    2.= 表示精确的查找地址,如location = /它只会匹配uri为/的请求,如果请求为/index.html,将查找另外的

    location,而不会匹配这个,当然可以写两个location,location = /和location /,这样/index.html将匹配到后者

    ,如果你的站点对/的请求量较大,可以使用这个方法来加快请求的响应速度。
    3.@ 表示为一个location进行命名,即自定义一个location,这个location不能被外界所访问,只能用于Nginx产生的

    子请求,主要为error_page和try_files。
    注意,这3个标识符后面不能跟正则表达式,虽然配置文件检查会通过,而且没有任何警告,但是他们并不会进行匹配


    综上所述,location指令对于后面值的匹配顺序为:

    1.标识符“=”的location会最先进行匹配,如果请求uri匹配这个location,将对请求使用这个location的配置。
    2.进行字符串匹配,如果匹配到的location有^~这个标识符,匹配停止返回这个location的配置。
    3.按照配置文件中定义的顺序进行正则表达式匹配。最早匹配的location将返回里面的配置。
    4.如果正则表达式能够匹配到请求的uri,将使用这个正则对应的location,如果没有,则使用第二条匹配的结果。
    server_name
    查看维基:server_name
    server_name用于配置基于域名或IP的虚拟主机,这个指令也是可以使用正则表达式的,但是注意,这个指令中的正则

    表达式不用带任何的标识符,但是必须以~开头:

     代码如下 复制代码
    server {
      server_name   www.example.com   ~^wwwd+.example.com$;
    }

    server_name指令中的正则表达式可以使用引用,高级的应用可以查看这篇文章:在server_name中使用正则表达式

    fastcgi_split_path_info
    查看维基:fastcgi_split_path_info
    这个指令按照CGI标准来设置SCRIPT_FILENAME (SCRIPT_NAME)和PATH_INFO变量,它是一个被分割成两部分(两个引用

    )的正则表达式。如下:

     

     代码如下 复制代码
    location ~ ^.+.php {
      (...)
      fastcgi_split_path_info ^(.+.php)(.*)$;
      fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
      fastcgi_param PATH_INFO $fastcgi_path_info;
      fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
      (...)
    }

    第一个引用(.+.php)加上/path/to/php将作为SCRIPT_FILENAME,第二个引用(.*)为PATH_INFO,例如请求的完整

    URI为show.php/article/0001,则上例中SCRIPT_FILENAME的值为/path/to/php/show.php,PATH_INFO则

    为/article/0001。
    这个指令通常用于一些通过PATH_INFO美化URI的框架(例如CodeIgniter)。

    gzip_disable
    查看维基:gzip_disable
    通过正则表达式来指定在哪些浏览器中禁用gzip压缩。


    gzip_disable     "msie6";rewrite
    查看维基:rewrite
    这个指令应该也是用的比较多的,它需要使用完整的包含引用的正则表达式:

     代码如下 复制代码

    rewrite  "/photos/([0-9] {2})([0-9] {2})([0-9] {2})" /path/to/photos/$1/$1$2/$1$2$3.png;通常环境下我们

    会把它和if结合来使用:

     代码如下 复制代码

    if ($host ~* www.(.*)) {
      set $host_without_www $1;
      rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1为'/foo',而不是'www.mydomain.com/foo'
    }

    Nginx中的正则如何匹配中文
    首先确定在编译pcre时加了enable-utf8参数,如果没有,请重新编译pcre,然后就可以在Nginx的配置文件中使用这

    样的正则:”(*UTF8)^/[x{4e00}-x{9fbf}]+)$”注意引号和前面的(*UTF8),(*UTF8)将告诉这个正则切换为UTF8模

    式。

     代码如下 复制代码

    [root@backup conf]# pcretest
    PCRE version 8.10 2010-06-25

      re> /^[x{4e00}-x{9fbf}]+/8
    data> 测试
     0: x{6d4b}x{8bd5}
    data> Nginx模块参考手册中文版
    No match
    data> 参考手册中文版
     0: x{53c2}x{8003}x{624b}x{518c}x{4e2d}x{6587}x{7248}

    location顺序错误导致下载.php源码而不执行php程序的问题

    看下面的例子片断(server段、wordpress安装到多个目录):
    =====================================

     代码如下 复制代码

    location / {
            try_files $uri $uri/ /index.html;
    }

    location /user1/ {
          try_files $uri $uri/ /user1/index.php?q=$uri&$args;
    }

    location ~* ^/(user2|user3)/ {
            try_files $uri $uri/ /$1/index.php?q=$uri&$args;
    }

    location ~ .php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi_params;
    }

    =====================================

    nginx.conf的配置代码看上去没有任何问题,而事实上:
    访问 /user1/会正常执行php程序。
    访问 /user2/ 或 /user3/ 都不会执行程序,而是直接下载程序的源代码。

    原因在哪里?看到他们地区别了吗?
    /user1/是普通location写法
    而/user2/ 或 /user3/ 是正则表达式匹配的location

    问题就出在了/user2/ 或 /user3/匹配location指令使用了正则表达式,所以必须注意代码段的先后顺序,必须把

    location ~ .php$ {...}段上移、放到它的前面去。

    正确的代码举例:
    =====================================

     代码如下 复制代码

    location / {
            try_files $uri $uri/ /index.html;
    }

    location /user1/ {
          try_files $uri $uri/ /user1/index.php?q=$uri&$args;
    }

    location ~ .php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi_params;
    }

    location ~* ^/(user2|user3)/ {
            try_files $uri $uri/ /$1/index.php?q=$uri&$args;
    }

    =====================================

    【注意】对于普通location指令行,是没有任何顺序的要求的。如果你也遇到了类似的问题,可以尝试调整使用正则

    表达式的location指令片断的顺序来调试

    展开全文
  • 正则表达式匹配提取省市区

    万次阅读 2018-03-01 18:18:39
    本文主要介绍通过正则表达式匹配提取省市区,有完整的代码示例和详细的注释。
  • 正则表达式匹配任意字符

    万次阅读 多人点赞 2016-08-04 14:08:02
    最开始以为.* 可以匹配任意字符,后来发现有问题,匹配不了换行符\n 查了下资料,用[\s\S]*匹配可以  解释:\s空白符,\S非空白符,所以[\s\S]是任意字符
  • Java实现 LeetCode 10 正则表达式匹配

    万次阅读 多人点赞 2020-02-12 10:32:38
    10. 正则表达式匹配 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s...
  • 正则表达式匹配后删除

    千次阅读 2019-08-07 09:53:31
    使用正则表达式匹配后,删除该匹配。 工具 https://regex101.com/ 解决方法 使用正则表达式的替换即可。 演示 删除下面字符中,每行小括号之后的内容 aiowen(lowegoinq awenow(aohwg hneg(fwone sejognw(owihga ...
  • 正则表达式匹配换行符

    千次阅读 2019-01-31 14:44:58
    正则表达式匹配换行符
  • 正则表达式匹配多行文本

    千次阅读 2019-05-02 00:52:00
    今天做爬虫项目要用正则表达式匹配,以前没学过正则表达式,发现正则表达式功能真的是很强大。简单的都容易匹配,但是如何匹配多行文本?我首先想到的是用\s*匹配空字符(回车、换行、水平制表符等),然后用.*匹配...
  • 正则表达式匹配固定个字符

    千次阅读 2018-11-20 22:56:00
    正则表达式匹配固定个字符 查找了很多都没有找到答案,最后在知乎上找到了。 问题:怎么使用匹配正则表达式匹配两个相同的字母,而不要匹配三个相同的字母? 比如使用正则表达式匹配“aa”,出现baab时可以匹配其中...
  • 正则表达式匹配固定汉字

    千次阅读 2020-04-22 21:02:00
    正则表达式匹配固定汉字 场景 收到String类型数据,需要进行匹配是否包含固定的字符(英文、汉字),如果有则输出固定字符位置之前的数据,如果没有。则输出无 思路 使用正则表达式进行匹配,并使用group方法进行...
  • 正则表达式 匹配日期和时间

    万次阅读 2018-09-10 14:17:14
    1、正则表达式匹配字符串,注意位数
  • 【计算机笔记】Java 正则表达式匹配

    万次阅读 2019-12-16 21:41:53
    19. 正则表达式匹配 题目描述 请实现一个函数用来匹配包括 ‘.’ 和 ‘*’ 的正则表达式。模式中的字符 ‘.’ 表示任意一个字符,而 ‘*’ 表示它前面的字符可以出现任意次(包含 0 次)。 在本题中,匹配是指字符串...
  • Django2.0 正则表达式匹配的简单例子

    万次阅读 2019-03-12 11:56:13
    在Django中,使用正则表达式,匹配Url ...如果需要使用正则表达式匹配Url,先需要引入djangoUrl包 from django.conf.urls import url 然后再将需要使用正则匹配的URL改下成如下格式 url(r'...
  • 使用正则表达式匹配手机号

    千次阅读 2019-04-06 11:08:29
    使用正则表达式匹配手机号 文献种类:专题技术文献; 开发工具与关键技术: VS 作者:卢媛媛 ; 撰写时间:2019 年 3月 29 日 正则表达式,又称规则表达式,许多程序设计语言都支持利用正则表达式进行字符串操作...
  • oracle正则表达式匹配中文

    万次阅读 2017-10-12 10:55:22
    oracle正则表达式regexp_...所以,我们需要用另一种方式来实现oracle正则表达式匹配中文。 我们需要用到oracle的内置函数UNISTR(str): ASCIISTR语法:asciistr(str) 功能:返回字符串的规则表现形式,英文和数字变
  • 正则表达式匹配字符串数字 字母 字符 长度为1-8,可以纯字母纯数字纯符号,首尾不能有空格,中间可以有空格, 空格算长度
  • 正则表达式匹配大括号里面的内容

    万次阅读 2017-09-12 13:59:20
    正则表达式匹配大括号里面的内容
  • 下面讲解在jsp中用正则表达式匹配邮箱的基本方法: 首相给出表达式: var regex = /^(?:\w+\.?)\w+@(?:\w+\.)+\w+$/;   下面逐步讲解其含义: /^ $/ 分别表示正则表达式的开始和结束 标识  ( ?:\w 括号表示...
  • 正则表达式匹配 年龄

    千次阅读 2018-01-24 17:11:45
    通过正则表达式匹配年龄:0-159 ^((1[0-5])|[1-9])?\d$
  • mysql正则表达式匹配单个数字

    千次阅读 2018-11-14 17:46:50
    匹配以单个数字开头的ip ...主要思路是结合字符串处理和正则表达式,但是正则表达式匹配不了单个数字开头的。 所以类似[0-9]{1}.这种是匹配不了单个数字的。 \b{0}这种正规的正则表达式,在mysql中并不适用。 ...
  • 正则表达式匹配中文

    千次阅读 2018-03-02 15:18:16
    在实际开发中,偶尔需要用到正则表达式匹配中文JavaScript用正则来匹配中文时:百度百科中直接查询“正则表达式”, 可以看到“元字符”的列表,里面有说明\u的用法。(其中\un,匹配n,其中n是一个四个十六进制数字...
  • JavaScript 正则表达式匹配汉字

    千次阅读 2018-01-30 13:44:15
    在谷歌搜索「JavaScript 正则表达式匹配汉字」的时候,前几条结果全都是 /[\u4e00-\u9fa5]/。没有人怀疑这个正则表达式有什么问题,那么在 2018 年的今天,让我们站在 Chrome 64 的肩膀上,放飞一下自我。 汉文...
  • 谁有完整的正则表达式匹配字符串组合的word文档,正则表达式感觉使用的好频繁,想全部仔细的看看
  •   在一次Java程序设计课程中,在课堂上了解到了正则表达式,然后自己去百度了一番,发现正则表达式应用的范围还是比较广泛的,在Python爬虫爬取数据时候,也会用上正则表达式,所以决定花点心思去学习一下正则...
  • 求一个正则表达式匹配日期类型 日期格式为 "yyyy-MM-dd",考虑到要符合多种格式,不受0的影响例如 "2018-1-1" "2018-01-01" "2018-001-002" //前面可以添加任意个0 可以忽略平年和闰年的影响...
  • 在利用Python抓取CSDN博客时,需要利用正则表达式匹配多行HTML,HTML如下: 使用\s*匹配换行,div与class之间也需要使用通用字符 正则如下:<div.?class="title">\s*<h2>\s*<a.?href="(.*?)" ...
  • 标准SQL匹配和正则表达式匹配

    千次阅读 2018-05-11 15:32:43
    MySQL中的模式匹配分为两种: 一种是标准SQL匹配,另一种是 正则表达式匹配标准SQL匹配,我们通常用的最多的一种方式 a:使用LIKE和NOT LIKE比较操作符(注意不能使用=或!=); b:模式默认是忽略大小写的; c:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,593
精华内容 32,237
关键字:

正则表达式匹配