首页 > 其他分享 >2023-01-06-Regex

2023-01-06-Regex

时间:2023-10-09 18:46:20浏览次数:40  
标签:Regex 01 匹配 haa 字母 beer ber 06 ha

最近工作终于闲了下来,可以上班研究代码。遇到一些需要正则表达式的编程问题,无法解决所以决定个学一下。

Regex 101 - ZH-CN (regexlearn.com)

Regex Learn - 练习场

Regex Learn - cheatsheet

练习题

简单

匹配单词

he is in black.

black

. 允许匹配任何字符,包括特殊字符和空格

A B C D E

.

肯定字符集 [abc] 匹配字母可以用[a-z] 匹配数字可以用[0-9] 或者 \d

bar ber bir bor bur

b[aeiou]r

否定字符集[^abc]

bar ber bir bor bur

b[^ei]r

字母范围[a-z]

重复? + *

? 加在字母后代表出现0次或1次

colorcolour

colou?r

+ 加在字母后代表出现1次或多次

br ber beer

be+r

* 加在字母后代表出现0次或多次

br ber beer

be*r

大括号

{x}加在字母后代表出现x次

ber beer beeer beeeer

be{2}r

{n, }加在字母后代表出现n到正无穷次,类似集合,[n,∞)

ber beer beeer beeeer

be{3,}r

分组()

分组可以只抓取匹配到的字符中的一部分。(通常也可以全都获取到再replace)

file_record_transcript.pdf

(.*).pdf$

在python种可以这样使用

import re  
txt = "The rain in Spain.pdf"  
x = re.match("(^The.*).(pdf)$", txt)  
print(x.group(1)) #The rain in Spain  
print(x.group(2)) #pdf

() 分组可以把上面的重复符号给组用。而不只是一个字母。

\1,\2 分组引用,可以把组像变量一样引用。第一组就是\1

ha-ha,haa-haa

(ha)-\1,(haa)-\2

像当于是:

(ha)-(ha),(haa)-(haa)

(?: ): 非捕获分组 (不能被引用)

ha-ha,haa-haa

(?:ha)-ha,(haa)-/1

转义字符 \

{ } [ ] / \ + * . $^ | ? 如果要这些特殊字符,需要在前面加上反斜杠匹配

匹配开头 ^

1. 3 eggs, beaten

2. 1 tsp sunflower oil

3. 1 tsp butter

^[0-9]

匹配尾巴 $

html.html.html-da-sdfhtml

html$

匹配字符 \w

字母、数字和下划线 \w,其他各种不在这范围内的 \W (匹配中文和中文标点可以使用\W)

数字\d,非数字\D

空白符\s,非空白\S

Lookarounds

官方中文翻译:零宽断言,我觉得这个翻译真的是误导人,“断言”:极其肯定地说,断言你妈,还零宽,就不说人话是吧。
应该叫:附近匹配/左右匹配。

其实我觉得如果后缀前缀不变的话,可以吧这段比如3PM一起给match出来,然后再replace PM 就可以了,比这个奇怪的语法看起来要好一些。

看看后面(指定尾缀)

Date: 4 Aug 3PM

\d+(?=PM)

后面不要!(指定不要的尾缀)

Date: 4 Aug 3PM

\d+(?!PM)

看看前面

Product Code: 1064 Price: $5

(?<=\$)\d+

前面不要!

Product Code: 1064 Price: $5

(?<!\$)\d+

全局标志/gmi

g - 获取全部,不加上只获取第一个

m - 多行,如果不开启则全部文本视作一行,对于有匹配文本末端$的有影响

i - 大小写不在意,不加上则大小写敏感

贪婪匹配

正则表达式默认执行贪婪匹配,能要长的就不要短的

ber beer beeer beeeer

.*r

懒惰匹配? 还记得吗,?代表出现0次或1次

ber beer beeer beeeer

.*?r

标签:Regex,01,匹配,haa,字母,beer,ber,06,ha
From: https://www.cnblogs.com/kasusa/p/17752862.html

相关文章

  • 2023-02-06grub
    +++title="grubsettingsfornoobies"description=""date=2023-02-06T14:21:50+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["ubuntu"]series=[]images=[]+++......
  • 2023-02-06Fix dual system time problem copy
    +++title="Fixdualsystemtimeproblem"description=""date=2023-02-06T14:21:50+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["ubuntu"]series=[]images=[]+......
  • 2023-01-31python-path
    +++title="使用标准的path处理方法(Python)"description=""date=2023-01-31T15:26:05+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["python"]series=[]images=[]+++标准方......
  • 2023-01-31python-json
    +++title="Json读写(Python)"description=""date=2023-01-31T15:34:37+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=[""]series=[]images=[]+++使用python读写json......
  • 01webpack基础知识
    1概述1.1什么是webpack1、webpack是一种前端资源构建工具,一个静态模块打包器(modulebundler)。在webpack看来,前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)2、webpack是一个前......
  • 01_搭建和试用开发环境
    rust的官网https://www.rust-lang.org/1.安装、卸载rustwindows环境下载windows安装包双击后进入命令行安装,按照提示输入数字选项安装即可。如果系统中缺少c++的库,会提示先安装visualstudio。linuxorMAC:curlhttps://sh.rustup.rs-sSf|shWindowsSubsystemf......
  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance(xsi:schemaLocation详解)
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"中xsi的意思是:本xml文件中要用到某些来自xsi代表的“http://www.w3.org/2001/XMLSchema-instance”这个命名空间的元素 比如用来引入无命名空间schema文件的noNamespaceSchemaLocation="XXX";以及引入自带命名空间的sch......
  • [极客大挑战 2019]HardSQL
    原理用fuzz字典来爆破哪些关键字被过滤了sql语句可以不用空格,仅用括号来隔开username=1'or(updatexml(1,concat(0x7e,database()),1))%23url编码一些值:%20空格%23#。。。and关键字可以用^来代替,=可以用like来代替。有时候不写空格也挺方便的,直接省略过滤空格的可能性截取字......
  • [ZJCTF 2019]NiZhuanSiWei
    原理反序列话伪协议data和filter解题过程进入靶场看到源码<?php$text=$_GET["text"];$file=$_GET["file"];$password=$_GET["password"];if(isset($text)&&(file_get_contents($text,'r')==="welcometothezjctf"......
  • [HCTF 2018]admin
    原理Unicode欺骗弱口令session伪造解题过程进入靶场,有注册和登录按钮,再看原代码看到/posts链接,但是点了是404,还有登录和注册链接,之后就是youarenotadmin的提示,估计是要变成admin登录解法一弱口令登录最终爆破得出密码是123,登录拿到flag解法二unicode编码欺骗参......