程序语言中的正则表达式

程序语言中的正则表达式

java处理正则表达式

读取文件,并解析文件中的ip地址。例子:

package getIP;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class GetIp{
    public static void main(String[] args) throws IOException {

        Map
 
    
 
    
      result = 
     new HashMap 
     
       (); String s = 
      "Aug 23 09:29:46 oracle205 sshd[222466]: Accepted password for root from 124.127.207.154 port 46955 ssh2"; File f = 
      new File( 
      "E:\\secure-20150830"); GetIp.getfromFile(result, f); GetIp.print(result); } 
      public static void print(Map result) { 
      for(String ip:result.keySet()){ System.out.println(ip+ 
      "--"+result.get(ip)); } } 
      public static void getfromFile(Map result, File f)  throws IOException{ String regex = 
      "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"; Pattern pa = Pattern.compile(regex); BufferedReader br = 
      new BufferedReader( 
      new FileReader(f)); String line = 
      ""; 
      while((line = br.readLine())!= 
      null){ Matcher match = pa.matcher(line); 
      while(match.find()){ String x = match.group(); 
      if(result.containsKey(x)){ result.put(x, result.get(x)+ 
      1); } 
      else{ result.put(x, 
      1); } } } br.close(); } } 
      
    

python处理正则表达式

读取文件,并解析文件中的ip地址。

import re

__author__ = 'hgfdo'

f = open(r"e:\secure", 'r')

pattern = re.compile(r'(\d+)\.(\d+)\.(\d+)\.(\d+)')
result = {}

for line in f.readlines():
    match = pattern.search(line)
    if match:
        x = match.group()
        if x in result.keys():
            result[x] = result[x] + 1
        else:
            result[x] = 1

for x in result.keys():
    print "%s --- %d" %(x, result[x])

注意:在java中使用的是Pattern.matcher(String),在String中搜索匹配的字符串(不管这个匹配是不是在字符串的起始位置),而python的match(string)只能匹配出在字符串起始位置的子字符串,若子字符串在字符串中间,则匹配不出,需要使用search(String)来匹配字符串中的子字符串。

贺广福(heguangfu)@2015-9-17

你可能感兴趣的:(程序语言中的正则表达式)