正则表达式的实践

yPhantom 2019年11月08日 24次浏览

Java

一般流程:创建 pattern,调用matcher

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class RegexMatches
{
    public static void main( String args[] ){
 
      // 按指定模式在字符串查找
      String line = "This order was placed for QT3000! OK?";
      String pattern = "(\\D*)(\\d+)(.*)";
 
      // 创建 Pattern 对象
      Pattern r = Pattern.compile(pattern);
 
      // 现在创建 matcher 对象
      Matcher m = r.matcher(line);
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
         System.out.println("Found value: " + m.group(1) );
         System.out.println("Found value: " + m.group(2) );
         System.out.println("Found value: " + m.group(3) ); 
      } else {
         System.out.println("NO MATCH");
      }
   }
}

Python

一般流程:import re,compile生成一个pattern,调用findall返回所有的匹配项

import re

pattern = re.compile("(\\D*)(\\d+)(.*)")
result = pattern.findall("This order was placed for QT3000! OK?")

小技巧,在pattern使用(.+)能返回你想要的被匹配的字符串,而不是返回整个字符串。

使用(.+?),非贪婪模式。

注意贪婪模式的使用

JavaScript

/(\\D*)(\\d+)(.*)/.test("This order was placed for QT3000! OK?")

用来普通debug比较方便,因为直接打开浏览器F12就能调,主要看自己的正则表达式写的对不对吧。