📜  正则表达式怎么写?

📅  最后修改于: 2022-05-13 01:57:13.485000             🧑  作者: Mango

正则表达式怎么写?

正则表达式(有时称为有理表达式)是定义搜索模式的字符序列,主要用于与字符串的模式匹配,或字符串匹配,即“查找和替换”类操作。(维基百科)。

正则表达式是一种将模式与字符序列匹配的通用方法。它用于各种编程语言,如 C++、 Java和Python。

什么是正则表达式,是什么让它如此重要?
正则表达式用于谷歌分析中的 URL 匹配,以支持搜索和替换在最流行的编辑器中,如 Sublime、Notepad++、Brackets、Google Docs 和 Microsoft Word。

Example :  Regular expression for an email address :
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$ 

上面的正则表达式可用于检查给定的字符集是否是电子邮件地址。

正则表达式怎么写?



  • 中继器: * , + 和 { } :
    这些符号充当中继器,告诉计算机前面的字符将被使用不止一次。
  • 星号 ( * ):
    它告诉计算机前述字符匹配(或字符集)为0次或更多次(高达无穷大)。
    Example : The regular expression ab*c will give ac, abc, abbc, 
    abbbc….ans so on 
  • 加号 ( + ):
    它告诉为atleast一次或多次(无限高达)计算机以重复前面的字符(或字符集)。
    Example : The regular expression ab+c will give abc, abbc,
    abbc, … and so on.
  • 花括号 {…}:
    它告诉对于多次此括号内的值的计算机以重复前面的字符(或字符集)。
    Example : {2} means that the preceding character is to be repeated 2 
    times, {min,} means the preceding character is matches min or  more 
    times. {min,max} means that the preceding character is repeated at
    least min & at most max times.
    
  • 通配符 – ( . )
    点符号可以代替任何其他符号,这就是为什么它
    被称为字符。
    Example : 
    The Regular expression .* will tell the computer that any character
    can be used any number of times.
  • 可选字符– ( ? )
    这个符号告诉计算机前面的字符可以
    或者可能不存在于要匹配的字符串中。
    Example : 
    We may write the format for document file as – “docx?”
    The ‘?’ tells the computer that x may or may not be 
    present in the name of file format.
  • 插入符号 (^):设置匹配位置:告诉计算机匹配必须从字符串或行的开头开始。
    Example : ^\d{3} will match with patterns like "901" in "901-333-".
  • 美元 ( $ ) 符号
    它告诉计算机匹配必须出现在字符串的末尾或行或字符串末尾的 \n 之前。
    Example : -\d{3}$  will match with patterns like "-333" in "-901-333".
  • 字符类
    字符类匹配一组字符中的任何一个。它用于匹配语言的最基本元素,如字母、数字、空格、符号等。

    /s : 匹配任何空白字符,例如空格和制表符
    /S : 匹配任何非空白字符
    /d : 匹配任何数字字符
    /D : 匹配任何非数字字符
    /w :匹配任何单词字符(基本上是字母数字)
    /W : 匹配任何非单词字符
    /b :匹配任何单词边界(这将包括空格、破折号、逗号、分号等)



    [set_of_characters] – 匹配set_of_characters 中的任何单个字符。默认情况下,匹配区分大小写。

    Example : [abc] will match characters a,b and c in any string.

    [^set_of_characters] –否定:匹配不在 set_of_characters 中的任何单个字符。默认情况下,匹配区分大小写。

    Example : [^abc] will match any character except a,b,c .

    [first-last]字符范围:匹配从第一个到最后一个范围内的任何单个字符。

    Example : [a-zA-z] will match any character from a to z or A to Z.
  • 转义符:\

    如果要匹配实际的“+”、“.”等字符,在该字符之前添加一个反斜杠(\)。这将告诉计算机将以下字符视为搜索字符并将其视为匹配模式。

    Example : \d+[\+-x\*]\d+ will match patterns like "2+2"
    and "3*9" in "(2+2) * 3*9".
  • 分组字符( )

    正则表达式的一组不同符号可以组合在一起作为一个单元并表现为一个块,为此,您需要将正则表达式包裹在括号()中。

    Example : ([A-Z]\w+) contains two different elements of the regular 
    expression combined together. This expression will match any pattern 
    containing uppercase letter followed by any character.
  • 竖线 ( | ) :
    匹配由竖线 (|)字符分隔的任何一个元素。

    Example :  th(e|is|at) will match words - the, this and that.
  • \数字 :
    反向引用:允许随后在同一正则表达式中标识先前匹配的子表达式(捕获或括在圆括号内的表达式)。 \n 表示包含在第 n 个括号内的组将在当前位置重复。
    Example : ([a-z])\1 will match “ee” in Geek because the character 
    at second position is same as character at position 1 of the match.
  • 评论:(?#评论)-
    内嵌注释:注释在第一个右括号处结束。
    Example : \bA(?#This is an inline comment)\w+\b

    # [到行尾] : X 模式注释。注释以未转义的 # 开头,一直到行尾。

    Example :  (?x)\bA\w+\b#Matches words starting with A