📅  最后修改于: 2020-10-19 04:11:13             🧑  作者: Mango
正则表达式是形成模式的字符序列,主要用于搜索和替换。创建模式的目的是匹配特定的字符串,以便开发人员可以根据条件提取字符并替换某些字符。
RegExp对象可帮助开发人员匹配字符串模式,而属性和方法可帮助我们轻松使用正则表达式。它类似于JavaScript中的RegExp
模式-模式方法代表用于定义正则表达式的字符串,应在使用正则表达式对象之前进行设置。
IgnoreCase-一个布尔属性,表示是否应该对字符串中所有可能的匹配(如果为true或false)测试正则表达式。如果未明确指定,则IgnoreCase值设置为False。
全局-一个布尔属性,表示是否应针对字符串中所有可能的匹配项测试正则表达式。如果未明确指定,则全局值设置为False。
Test (搜索字符串)-Test方法将字符串作为参数,如果正则表达式可以成功地与字符串匹配,则返回True,否则返回False。
替换(搜索字符串,替换字符串)-替换方法采用2个参数。如果搜索成功,则将其替换为替换字符串,并返回新字符串。如果没有匹配项,则返回原始搜索字符串。
Execute (搜索字符串)-Execute方法的作用类似于Replace,不同之处在于它返回Matches集合对象,其中包含每个成功匹配项的Match对象。它不会修改原始字符串。
作为Execute方法的结果,返回Matches集合对象。该集合对象可以包含零个或多个Match对象,并且该对象的属性是只读的。
Count -Count方法代表集合中匹配对象的数量。
Item -Item方法使可以从matchs集合对象访问match对象。
Match对象包含在matchs集合对象中。这些对象表示搜索字符串后的成功匹配。
FirstIndex-它表示原始字符串在其中发生匹配的位置。该索引从零开始,这意味着字符串中的第一个位置为0。
长度-代表匹配字符串总长度的值。
值-代表匹配值或文本的值。也是访问Match对象时的默认值。
模式构建类似于PERL。在使用正则表达式时,模式构建是最重要的。在本节中,我们将讨论如何基于各种因素创建模式。
位置匹配的意义在于确保将正则表达式放在正确的位置。
Symbol | Description |
---|---|
^ | Matches only the beginning of a string. |
$ | Match only the end of a string. |
\b | Matches any word boundary |
\B | Matches any non-word boundary |
任何形式的字符(例如字母,数字或特殊字符,甚至十进制,十六进制)都可以视为字面量。由于在正则表达式的上下文中,很少有字符具有特殊含义,因此我们需要使用转义序列对它们进行转义。
Symbol | Description |
---|---|
Alphanumeric | Matches alphabetical and numerical characters only. |
\n | Matches a new line. |
\[ | Matches [ literal only |
\] | Matches ] literal only |
\( | Matches ( literal only |
\) | Matches ) literal only |
\t | Matches horizontal tab |
\v | Matches vertical tab |
\| | Matches | literal only |
\{ | Matches { literal only |
\} | Matches } literal only |
\\ | Matches \ literal only |
\? | Matches ? literal only |
\* | Matches * literal only |
\+ | Matches + literal only |
\. | Matches . literal only |
\b | Matches any word boundary |
\B | Matches any non-word boundary |
\f | Matches a form feed |
\r | Matches carriage return |
\xxx | Matches the ASCII character of an octal number xxx. |
\xdd | Matches the ASCII character of an hexadecimal number dd. |
\uxxxx | Matches the ASCII character of an UNICODE literal xxxx. |
字符类是由定制分组形成的模式,并包含在[]大括号内。如果我们期望一个字符类不应该出现在列表中,那么我们应该使用负号(即大写^)忽略该特定字符类。
Symbol | Description |
---|---|
[xyz] | Match any of the character class enclosed within the character set. |
[^xyz] | Matches any of the character class that are NOT enclosed within the character set. |
. | Matches any character class except \n |
\w | Match any word character class. Equivalent to [a-zA-Z_0-9] |
\W | Match any non-word character class. Equivalent to [^a-zA-Z_0-9] |
\d | Match any digit class. Equivalent to [0-9]. |
\D | Match any non-digit character class. Equivalent to [^0-9]. |
\s | Match any space character class. Equivalent to [ \t\r\n\v\f] |
\S | Match any space character class. Equivalent to [^\t\r\n\v\f] |
重复匹配允许在正则表达式中进行多次搜索。它还指定元素在正则表达式中重复的次数。
Symbol | Description |
---|---|
* | Matches zero or more occurrences of the given regular Expression. Equivalent to {0,}. |
+ | Matches one or more occurrences of the given regular Expression. Equivalent to {1,}. |
? | Matches zero or one occurrences of the given regular Expression. Equivalent to {0,1}. |
{x} | Matches exactly x number of occurrences of the given regular expression. |
{x,} | Match atleast x or more occurrences of the given regular expression. |
{x,y} | Matches x to y number of occurences of the given regular expression. |
交替和分组可以帮助开发人员创建更复杂的正则表达式,尤其是在处理正则表达式中的复杂子句时,从而提供了极大的灵活性和控制力。
Symbol | Description |
---|---|
0 | Grouping a clause to create a clause. “(xy)?(z)” matches “xyz” or “z”. |
| | Alternation combines one regular expression clause and then matches any of the individual clauses. “(ij)|(23)|(pq)” matches “ij” or “23” or “pq”. |
下面给出的一些示例清楚地说明了如何构建正则表达式。
Regular Expression | Description |
---|---|
“^\s*..” and “..\s*$” | Represents that there can be any number of leading and trailing space characters in a single line. |
“((\$\s?)|(#\s?))?” | Represents an optional $ or # sign followed by an optional space. |
“((\d+(\.(\d\d)?)?))” | Represents that at least one digit is present followed by an optional decimals and two digits after decimals. |
下面的示例检查用户是否输入了格式应匹配的电子邮件ID,以使电子邮件ID后面跟有“ @”,然后是域名。