b3log handleMappingString

来源:互联网 发布:2016网络大电影排行 编辑:程序博客网 时间:2024/06/11 20:54
\\{[^}]+\\}
匹配“{”,之后不能紧跟“}”,可以多个{,最后匹配“}”  
即字符串中第一个“{”和第一个“}”之间的部分              

双斜杠“\\”为java里的转义字符

import java.util.regex.Matcher;import java.util.regex.Pattern;import java.util.ArrayList;import java.util.List;public class test_handleMappingString {//String uriPattern="http://www.188029.net";//String uriPattern="http://www.188029.net/go?tt=3";//String uriPattern="http://www^188029.net";//String uriPattern="http://www^188029\net";//String uriPattern="http://www^188029\\net";//String uriPattern="http://w{ww^188029\\net";//String uriPattern="http://w{ww^188{029}\\net";String uriPattern="I {fuck {you} very} much !";//String uriPattern="{}";//String uriPattern="{8}";//String uriPattern="{{}";List<String> paramNames = new ArrayList<String>();List<Integer> posSpan = new ArrayList<Integer>();List<Character> afertCharacters = new ArrayList<Character>();String handleMappingString() {        final Pattern pattern = Pattern.compile("\\{[^}]+\\}");        final Matcher matcher = pattern.matcher(uriPattern);        final StringBuilder uriMapping = new StringBuilder(uriPattern);        int fixPos = 0;        char[] tem;        int lastEnd = 0;        while (matcher.find()) {        System.out.println("找到了");            tem = new char[matcher.end() - matcher.start() - 2];            for(int i=0;i<tem.length;i++)            System.out.println("tem "+tem[i]);            System.out.println(matcher.start());            System.out.println(matcher.end());            uriMapping.getChars(matcher.start() - fixPos + 1, matcher.end() - fixPos - 1, tem, 0);            paramNames.add(new String(tem));            if (lastEnd == 0) {                posSpan.add(matcher.start());            } else {                posSpan.add(matcher.start() - lastEnd);            }            uriMapping.replace(matcher.start() - fixPos, matcher.end() - fixPos, "*");            fixPos = fixPos + matcher.end() - matcher.start() - 1;            lastEnd = matcher.end();            if (matcher.end() - fixPos < uriMapping.length()) {                afertCharacters.add(uriMapping.charAt(matcher.end() - fixPos));            } else {                afertCharacters.add(null);            }        }        return uriMapping.toString();    }/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubtest_handleMappingString okla=new test_handleMappingString();String letMeSee=okla.handleMappingString();System.out.println(letMeSee);}}
输出:

找到了
tem 

tem 

....

tem

2

13

I * very} much !

原创粉丝点击