博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

正则表达式匹配后替换匹配内容

Posted on 2012-10-17 12:14  feng1825  阅读(1137)  评论(0编辑  收藏  举报

需匹配的字符串:

View Code
 PROCEDURE ACCOUNT_IMPORT
  (
    P_USER_ID         NUMBER,               --  用户ID
    P_RESP_ID         NUMBER,               -- 职责ID
    P_APP_ID          NUMBER,               -- 应用ID
    P_IN_DATA_SET     eg_ebs_account_tab, -- 输入数据集

 
    p_result_flag OUT VARCHAR2,             -- 导入结果标志 S成功,E是不
    p_result_text OUT VARCHAR2,             -- 导入结果信息
    p_err_tab     OUT eg_ebs_err_tab,     -- 导入日志详细信息
    p_request_id  OUT NUMBER,               -- 提交请求ID
    p_import_time OUT DATE                  -- 提交时间
  );

匹配及替换:把后面有OUT的参数 替换成x_开头。后面没有OUT的 则不用替换。

View Code
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class RegexTest {
    public static void main(String[] args){
        StringBuilder str = new StringBuilder();
        str.append("PROCEDURE ACCOUNT_IMPORT(\n");
        str.append("P_USER_ID         NUMBER,               --  用户ID\n");
        str.append("P_RESP_ID         NUMBER,               -- 职责ID\n");
        str.append("P_APP_ID          NUMBER,               -- 应用ID\n");
        str.append("P_IN_DATA_SET     eg_ebs_account_tab, -- 输入数据集\n");
        str.append("p_result_flag OUT VARCHAR2,             -- 导入结果标志 S成功,E是不\n");
        str.append("p_result_text OUT VARCHAR2,             -- 导入结果信息\n");
        str.append("p_err_tab     OUT eg_ebs_err_tab,     -- 导入日志详细信息\n");
        str.append("p_request_id  OUT NUMBER,               -- 提交请求ID\n");
        str.append("p_import_time OUT DATE                  -- 提交时间);");
        
        System.out.println(str.toString());
        System.out.println(str.toString().length());
        
        String pattern = "\\w*\\s*OUT";
        Pattern p = Pattern.compile(pattern,Pattern.MULTILINE);
        Matcher m = p.matcher(str.toString());
        String content = str.toString();
        while(m.find()){
            System.out.println("\n"+m.group());
            String[] splitStr = m.group().split("OUT");
            String replaceStr = "x_"+splitStr[0];
            System.out.println(splitStr[0]+"\n"+replaceStr);
            content = content.replace(m.group(), replaceStr);
        };
        System.out.println("\n"+content);
    }
}

输出结果:

View Code
PROCEDURE ACCOUNT_IMPORT(
P_USER_ID         NUMBER,               --  用户ID
P_RESP_ID         NUMBER,               -- 职责ID
P_APP_ID          NUMBER,               -- 应用ID
P_IN_DATA_SET     eg_ebs_account_tab, -- 输入数据集
p_result_flag OUT VARCHAR2,             -- 导入结果标志 S成功,E是不
p_result_text OUT VARCHAR2,             -- 导入结果信息
p_err_tab     OUT eg_ebs_err_tab,     -- 导入日志详细信息
p_request_id  OUT NUMBER,               -- 提交请求ID
p_import_time OUT DATE                  -- 提交时间);
475

p_result_flag OUT
p_result_flag 
x_p_result_flag 

p_result_text OUT
p_result_text 
x_p_result_text 

p_err_tab     OUT
p_err_tab     
x_p_err_tab     

p_request_id  OUT
p_request_id  
x_p_request_id  

p_import_time OUT
p_import_time 
x_p_import_time 

PROCEDURE ACCOUNT_IMPORT(
P_USER_ID         NUMBER,               --  用户ID
P_RESP_ID         NUMBER,               -- 职责ID
P_APP_ID          NUMBER,               -- 应用ID
P_IN_DATA_SET     eg_ebs_account_tab, -- 输入数据集
x_p_result_flag  VARCHAR2,             -- 导入结果标志 S成功,E是不
x_p_result_text  VARCHAR2,             -- 导入结果信息
x_p_err_tab      eg_ebs_err_tab,     -- 导入日志详细信息
x_p_request_id   NUMBER,               -- 提交请求ID
x_p_import_time  DATE                  -- 提交时间);