您现在的位置是:主页 > news > 网站建设怎么报价/手机优化大师下载
网站建设怎么报价/手机优化大师下载
admin2025/6/27 6:26:51【news】
简介网站建设怎么报价,手机优化大师下载,wordpress 漏洞,大学 两学一做专题网站-- Start 不区分大小写的匹配模式 我们在忽略大小写匹配一节中介绍了如何在EmEditor中进行忽略大小写匹配,下面我们看一下如何在 Perl 和 Java中进行忽略大小写匹配。Perl 使用 /i 修饰符,Java 使用 Pattern.CASE_INSENSITIVE。 #!/usr/bin/perlmy $tes…
-- Start
不区分大小写的匹配模式
我们在忽略大小写匹配一节中介绍了如何在EmEditor中进行忽略大小写匹配,下面我们看一下如何在 Perl 和 Java中进行忽略大小写匹配。Perl 使用 /i 修饰符,Java 使用 Pattern.CASE_INSENSITIVE。
#!/usr/bin/perlmy $testText = "I love regular expressions."; if($testText =~ m/REGULAR/i) {print "finds the word."; } else {print "cannot find the word."; }
public static void main(String[] args) {String testText = "I love regular expressions.";Pattern p = Pattern.compile("REGULAR", Pattern.CASE_INSENSITIVE);Matcher m = p.matcher(testText);if (m.find()) {System.out.println("finds the word.");} else {System.out.println("cannot find the word.");}}
注释模式
有的正则表达式是非常复杂的,如果没有注释我们是很难看懂的。为了在正则表达式中添加注释,我们必须使用注释模式。Perl 使用 /x 修饰符,Java 使用 Pattern.COMMENTS。
#!/usr/bin/perlmy $testText = "I love regular expressions."; if($testText =~ m/# 匹配 r, 此处是注释r# 匹配 e, 此处是注释e# 匹配 g, 此处是注释g# 匹配 u, 此处是注释u# 匹配 l, 此处是注释l# 匹配 a, 此处是注释a# 匹配 r, 此处是注释r/x) {print "finds the word."; } else {print "cannot find the word."; }
public static void main(String[] args) {String testText = "I love regular expressions.";String regExp = "# 匹配 r \n" +"r" +"# 匹配 e \n" +"e" +"# 匹配 g \n" +"g" +"# 匹配 u \n" +"u" +"# 匹配 l \n" +"l" +"# 匹配 a \n" +"a" +"# 匹配 r \n" +"r";Pattern p = Pattern.compile(regExp, Pattern.COMMENTS);Matcher m = p.matcher(testText);if (m.find()) {System.out.println("finds the word.");} else {System.out.println("cannot find the word.");} }
单行模式(single-line mode),也叫点号通配模式(dot-match-all match mode)
我们在匹配任何字符:点号(.)中介绍了点号可以匹配任何字符。事实上,这句话并不准确,通常点号不能匹配换行符。为了使点号能够匹配换行符,我们必须使用单行模式,Perl 使用 /s 修饰符,Java 使用 Pattern.DOTALL。
#!/usr/bin/perlmy $testText = "I love reg\nular expressions."; if($testText =~ m/reg.ular/s) {print "finds the word."; } else {print "cannot find the word."; }
public static void main(String[] args) {String testText = "I love reg\nular expressions.";String regExp = "reg.ular";Pattern p = Pattern.compile(regExp, Pattern.DOTALL);Matcher m = p.matcher(testText);if (m.find()) {System.out.println("finds the word.");} else {System.out.println("cannot find the word.");} }
多行模式(multiline mode),又称增强的行锚点模式(Enhanced line-anchor match mode)
在程序中,^ 和 $ 用来匹配字符串的开始和结束位置。但是在通常情况下, 它们并不能识别字符串内部的换行符。也就是说用下面的正则表达式无法匹配下面的文本。
表达式:^regular文本:I love \nregular expressions
为了使 ^ 和 $ 能够识别换行符,我们可以使用多行模式,Perl 使用 /m 修饰符,Java 使用 Pattern.MULTILINE。
#!/usr/bin/perlmy $testText = "I love \nregular expressions."; if($testText =~ m/^regular/m) {print "finds the word."; } else {print "cannot find the word."; }
public static void main(String[] args) {String testText = "I love \nregular expressions.";String regExp = "^regular";Pattern p = Pattern.compile(regExp, Pattern.MULTILINE);Matcher m = p.matcher(testText);if (m.find()) {System.out.println("finds the word.");} else {System.out.println("cannot find the word.");} }
凡是有一利必有一弊,在多行模式下,如果我就想匹配字符串的开始和结束位置该怎么办呢? 为此, 正则表达式还提供了 \A 和 \Z,它们的作用和普通的 ^ 和 $ 一样,只是在多行模式下,它们的意义不会发生变化,也就是说 \A 和 \Z 永远也不会识别换行符。事实上,不论什么模式,还有一个元字符用来匹配字符串结束位置,那就是 \z,在大部分支持正则表达式的工具中它和 \Z 并没有差别。
综上所述,单行模式和多行模式没有任何关系,但是从名字上看,我们总觉得二者有关系。呵呵,你想多了。
文字文本模式(literal text)
在此模式下,任何字符都代表它本身,事实上等同于不使用正则表达式。要使用此模式,在Perl 中需要在表达式前后加上\Q 和 \E,Java 使用Pattern.LITERAL。
#!/usr/bin/perlmy $testText = "I love regular expressions."; if($testText =~ m/\Qreg.lar\E/) {print "finds the word."; } else {print "cannot find the word."; }
public static void main(String[] args) {String testText = "I love regular expressions.";String regExp = "reg.lar";Pattern p = Pattern.compile(regExp, Pattern.LITERAL);Matcher m = p.matcher(testText);if (m.find()) {System.out.println("finds the word.");} else {System.out.println("cannot find the word.");} }
混合使用多种模式
事实上,我们可以混合使用多种模式,看下面的例子。
#!/usr/bin/perlmy $testText = "I love \nregular expressions."; if($testText =~ m/^REGULAR/ism) {print "finds the word."; } else {print "cannot find the word."; }
public static void main(String[] args) {String testText = "I love \nregular expressions.";String regExp = "^REGULAR";Pattern p = Pattern.compile(regExp, Pattern.CASE_INSENSITIVE|Pattern.DOTALL|Pattern.MULTILINE);Matcher m = p.matcher(testText);if (m.find()) {System.out.println("finds the word.");} else {System.out.println("cannot find the word.");} }
--更多参见:正则表达式精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-05-12
-- Written by ShangBo on 2012-05-02
-- End