用正则进行字符串切分的一个应用

原创 2007年09月28日 10:37:00

想解决下面一个问题:

比如给定下面一个字符串,你好:<USER_NAME> ,这是您第<LOGIN_NUMBER>次登录。
我想把<>里的文字替换成别的,比如替换成从数据库中读取出来的数据。

如果还需要注意这样一个问题:<和>如果是真实的字符怎么办?
我是这样想的,用字符/<代表真正的<.也就是/,<,>均具有特殊含义。必须用//,/<,/>来代替。

我是这样想的,用正则表达式区分割,先把/转化了,再转化<和>.
虽然实现了,但总觉得写的不好。刚学正则,不大会用。
高人指点下。
感觉这段程序很实用。希望能完善。大家帮忙想想啊。
具体的程序如下:
String regEx = "/<";
        String st r= "/函数一://<flag1> 函数2: <flag2 > 测试 <flag3>";
  Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
       
       String s1 = "";
       int startPos = 0;
       int start = 0;
       int end = 0;
       System.out.println("length:"+str.length());
        while(m.find()){
         
         star t= m.start();
            end = m.end();
         System.out.println("start:"+start+"   end: "+end);
         s1+ = str.substring(startPos,start)+str.substring(start+1,end);
         startPos = end;
         System.out.println(s1);
        }
       if(end<=str.length()){
        s1+=str.substring(end);
        System.out.println(s1);
       }
      
      
      
    
      
       String reg1 = "<[^<][^>]*([^/]>)";
       p = Pattern.compile(reg1);
       m = p.matcher(s1);
      startPos = 0;
      start=0;
      end=0;
     
     System.out.println("length:"+s1.length());
      while(m.find()){
       
        start = m.start();
         end = m.end();
       System.out.println("start:"+start+"   end: "+end);
       
       System.out.println("非转义字符:"+s1.substring(startPos,start));
       System.out.println("转义字符:"+s1.substring(start,end));
       
       startPos = end;
     
      }
    
      if(end<s1.length()){
      
       System.out.println("非转义字符: "+s1.substring(end,s1.length()));
      }
    

 

相关文章推荐

正则表达式之匹配和切割

/* * 正则表达式:符合一定规则的表达式 * 作用:用于专门操作字符串 * 特点:用一些特定的符号来表示代码的操作,简化书写 * 所以学习正则表达式就是学习一些特定的符号的使用...

java正则替换字符串的高级应用

java正则替换字符串的高级应用,正则分组正则表达式的强大不再多少,基础语法可以参考网上其他文章,本文仅介绍java中利用正则对字符串进行替换。 需求场景:需将字符串“title:大学生#END# ...

python day05 编写一个给定多项式的简易计算机 re模块及正则匹配应用

正则匹配去括号 简易计算器
  • ss__zz
  • ss__zz
  • 2017年08月03日 22:11
  • 114

Delphi中如何给一个字符串从左边进行补0

今天在做一个Delphi项目的时候,要求要给银行的某些字段进行按位数进行补0,没有找到Delphi提供的专门函数 于是自己就简单的实现了一个,现在拿出来分享一下,当然了很简单: 参数1:要进行补0...

17、有一个由大小写组成的字符串,现在需要对他进行修改, 将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序)

/************************************************************************/ /* 17、有一个由大小写组成的字符串,现在需要对...

java 数据装箱及练习-对一个字符串中的数字进行排序

/* 八种数据类型:byte,short,int,long,float,double,char,boolean, 基本数据类型对象包装类: 为了方便操作基本数据类型值,将其封装成对象,在对象中定义了属...

【Java】编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置

编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置 只要求将变位词排在一起,没有要求这些词按照什么顺序排在一起。怎么检查两个词是不是变位词呢?统计每个字符串中各个字符出现的次数,如果两者...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用正则进行字符串切分的一个应用
举报原因:
原因补充:

(最多只允许输入30个字)