Java、PHP、JavaScript和Python中的正则表达式
本文介绍以下脚本和编程语言使用正则表达式:
- Java中正则表达式的使用
- PHP 中正则表达式的使用
- Python 中正则表达式的使用
- 在 JavaScript 中使用正则表达式
Java中正则表达式的使用(Java Regex)
在Java语言中,Regex或正则表达式是一个应用程序编程接口,用于操作、搜索和编辑字符串。您可以通过在代码中导入java.util.regex API 包来使用 java 中的正则表达式。
java.util.regex包下有以下三个类:
- regex.Pattern:此类有助于定义模式
- regex.Matcher:此类有助于使用模式对输入字符串执行匹配操作。
- PatternSyntaxException:此类通过指示正则表达式模式中的语法错误来帮助用户。
点号.用于匹配字符串中除行结束符(即 /n)以外的任何单个字符:
Pattern.matches(".r.", "arp"); // True,因为第二个字符在字符串和正则表达式中都是 r;
Pattern.matches(".bm", "abc"); //false,因为第三个字符在字符串和正则表达式中都不同;
Pattern.matches("..m", "msm"); //True,因为第三个字符在字符串和正则表达式中都是 m;
Pattern.matches("a..s", "amns"); //True,因为字符串和正则表达式的第一个和最后一个字符相同;
Pattern.matches(".s.", "mas"); //由于字符串和正则表达式中的第二个字符不同,结果False;
^字符用于匹配字符串开头右侧的表达式。[ a-z]表示小写字母:
Pattern.matches("^[ a-z]om", "Tom")); // 此语句返回 False,因为字符串以大写字母开头,与 regex 不匹配。
\d用于匹配一个小数位,即从 0 到 9。
Pattern.matches("^[\\d].*", "abc")); //该语句返回 True,因为字符串以字母开头,而不是数字,与正则表达式不匹配
PHP 中正则表达式的使用
您可以借助 PCRE(Perl 兼容正则表达式)库的函数在PHP中使用正则表达式(regex) 。
- preg_match() 如果正则表达式与特定字符串匹配,则 preg_match() 函数返回 true,否则返回 false。
- preg_match_all() preg_match_all() 函数用于匹配字符串中出现的所有模式。
- preg_replace() preg_replace() 函数会匹配一个模式,然后用字符串替换它。
- preg_split() preg_split() 函数使用 regex 将字符串分成子串。
- Preg_grep() preg_grep()函数用于返回输入数组中与正则表达式模式匹配的所有元素。
$regExp = "/[a-zA-Z]+ \d+/" ;
preg_match( $regExp , "Januaury 26" ); //为真,匹配大小写字母[a-zA-Z]+ 匹配数字\d+之间有一个空格
Python 中正则表达式的使用(Python Regex)
通过在脚本中导入 re 模块,您可以在Python代码中使用正则表达式(Regex) 。该模块定义了用于处理正则表达式的各种函数或方法。
- re.match() re.match() 方法用于返回与正则表达式匹配的字符串。
- re.search() 当在字符串或文本中找到模式时,re.search() 方法会返回一个匹配对象。
- re.findall() re.findall()方法用于返回包含所有匹配项的字符串列表。
- re.split() re.split()方法用于在与正则表达式匹配的基础上分割字符串。
- re.sub() re.sub()方法用于用另一个字符串替换匹配的字符串。
代码:
import re |
结果:
['Fruits ', ', Animals ', ', Cars ']
在 JavaScript 中使用正则表达式
借助以下两个字符串方法,您可以轻松地在 JavaScript 代码中使用正则表达式:
- search():该方法在字符串中搜索正则表达式,并返回找到匹配项的位置。
- Replace():该方法用于返回字符串中匹配字符替换后的字符串。
代码:
<!DOCTYPE html>
<html>
<head>
<script>
var string = "Our Site is helpfull for studying about technical courses.!";
pattern="technical";
var res = string.search(pattern); /* 如果在字符串中找到technical,该语句会获得technical在字符串中的位置. */
document.write("Position of the pattern in a string:");
document.write(res);
</script>
</head>
<body>
</body>
</html>
结果:
Position of the pattern in a string:40
正则表达式类似SQL语句,是一种专业DSL,以上不同语言只是其包装解释器。下面是是正则表达式统一语法:
正则表达式语法
- ^ 该字符用于匹配字符串开头右侧的表达式。 ^a与以 "a "开头的字符串进行表达式匹配,如 "aab"、"a9c"、"apr"、"aaaaab "等。
- $ $符号用于匹配字符串末尾左侧的表达式。 r$ 是与以 r 结尾的字符串匹配的表达式,如 "aaabr"、"ar"、"r"、"annn9r "等。
- . 该字符用于匹配字符串中除行结束符以外的任何单个字符,即 /n. b.x 是一个表达式,用于匹配字符串,如 "bax"、"b9x"、"bar"。
- | 它用于匹配任意一边的一个特定字符或一组字符。如果左边的字符被匹配,那么右边的字符将被忽略。 A|b 是一个表达式,它给出各种字符串,但每个字符串都包含 a 或 b。
- \ 用于转义字符串中该符号后的特殊字符;
- A 该表达式用于匹配字符串中的字符 "A"。此类字符串有 "Amcx"、"mnAr"、"mnopAx4"。
- Ab 它用于匹配字符串中的子串 "ab"。 该表达式匹配至少出现一次 "Ab "的字符串。此类字符串有 "Abcx"、"mnAb"、"mnopAbx4"。
表示一些特殊字符的转义字符:
- \s 用于匹配一个空白字符。
- \S 用于匹配一个非空白字符。
- \0 用于匹配 NULL 字符。
- \a 它用于匹配铃声或警报。
- \d It is used to match one decimal digit, which means from 0 to 9.
- \D 它用于匹配任何非十进制数字。
- \n 它可以帮助用户匹配新行。
- \w 它用于匹配字母、数字和字母组合。类似[0-9a-zA-Z] .
- \W 用于匹配一个非单词字符
- \b 用于匹配单词边界。
量词在正则表达式中用于指定字符出现的次数:
- + s+ 是一个表达式,表示 "s"、"ss"、"sss "等。
- ? 该字符指定其左侧的表达式为 0(零)或 1(一)次。 aS?是一个表达式,可以给出 "a "或 "as",但不能给出 "ass"。(?!b)表示“b”的否定前瞻断言。
- * 该字符指定其左侧的表达式为 0 或更多次 Br*是一个表达式,给出 "B"、"Br"、"Brr"、"Brrr "等...
- {x} 它只指定其左边的表达式 x 次。 Mab{5} 是一个表达式,它给出了以下包含 5 个 b 的字符串:"Mabbbbb"。
- {x, } 它指定其左边的表达式 x 次或更多次。 Xb{3, } 是一个表达式,它给出各种至少包含 3 个 b 的字符串。这样的字符串有 "Xbbb"、"Xbbbb "等。
- {x,y} 它指定其左边的表达式,至少 x 次但少于 y 次。 Pr{3,6} 是一个表达式,它提供了两个字符串。这两个字符串如下:"Prrrr" and "Prrrrr"
正则表达式中的组和范围定义了括号中的字符集合:
- [a-z] 该表达式匹配从 a 到 z 的小写字母。
- [A-Z] 它匹配从 A 到 Z 的大写字母。 该表达式匹配的字符串有:"EXCELLENT"、"NATURE"。
- ^[a-zA-Z] 该表达式用于匹配以小写字母或大写字母开头的字符串。
- [0-9] 它匹配 0 到 9 的数字。 该表达式匹配的字符串包括:"9845"、"54455"
- ab[^4-9] 该表达式匹配方括号中未定义的数字或字符。
- ( ) 它用于匹配简单括号中的所有内容。 A(xy) 是一个表达式,它与以下字符串匹配:"Axy"
- { } 它用于匹配左侧字符串大括号中定义的特定出现次数。 xz{4,6}是一个表达式,它与以下字符串匹配:"xzzzzz"
- [ ] 它用于匹配方括号中定义的字符范围内的任何字符。 xz[atp]r 是一个表达式,可与下列字符串匹配:"xzar", "xztr", 和"xzpr"
- [pqr] 它可单独匹配 p、q 或 r。 该表达式可匹配以下字符串:"p"、"q "和 "r"。
- [pqr][xy] 它匹配 p、q 或 r,后跟 x 或 y。 使用此表达式可匹配以下字符串:"px"、"qx "和 "rx","py"、"qy "和 "ry"。
- (?: …) 它用于匹配非捕获组。 A(?:nt|pple)是与以下字符串匹配的表达式:"Apple"
- [^…..] 它匹配方括号中未定义的字符。 假设,Ab[^pqr] 是一个表达式,它只匹配以下字符串:"Ab"
- [aeiou] 这个方括号只匹配小写元音。
- [AEIOU] 这个方括号只匹配大写元音;