Java、PHP、JavaScript和Python中的正则表达式

本文介绍以下脚本和编程语言使用正则表达式:

  • Java中正则表达式的使用
  • PHP 中正则表达式的使用
  • Python 中正则表达式的使用
  • 在 JavaScript 中使用正则表达式

Java中正则表达式的使用(Java Regex)
在Java语言中,Regex或正则表达式是一个应用程序编程接口,用于操作、搜索和编辑字符串。您可以通过在代码中导入java.util.regex API 包来使用 java 中的正则表达式。

java.util.regex包下有以下三个类:

  1. regex.Pattern:此类有助于定义模式
  2. regex.Matcher:此类有助于使用模式对输入字符串执行匹配操作。
  3. 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  
  
string = 'Fruits 32, Animals 80, Cars 34'  
pattern = '\D+'  #\D+用于匹配任何非十进制数字。
  
match = re.findall(pattern, string)       #该语句用于根据字符串中的给定模式存储匹配值;
print(match)   该语句显示存储在匹配变量   中的值;

结果:
['Fruits ', ', Animals ', ', Cars ']

在 JavaScript 中使用正则表达式
借助以下两个字符串方法,您可以轻松地在 JavaScript 代码中使用正则表达式:

  1. search():该方法在字符串中搜索正则表达式,并返回找到匹配项的位置。
  2. 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]    这个方括号只匹配大写元音;