这样一个字符串: 我在!马路边?捡到一分钱我想用正则表达式把叹号和问号之间的内容提取出来,即把“马路边”给提取出来。我会笨办法,即先把  “!马路边?”提取出来,然后再掐头去尾。
现在我想问,能用正则直接吧中间的内容提取出来,而不包含叹号和问号吗?

解决方案 »

  1.   

    package example;import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class MatcherExample {
    public static void main(String[] args) {
    Matcher matcher = Pattern.compile("([\\u4e00-\\u9fa5]+)\\!([\\u4e00-\\u9fa5]+)\\?([\\u4e00-\\u9fa5]+)").matcher("我在!马路边?捡到一分钱");
    while (matcher.find()) {
    System.out.println(matcher.group(0));
    System.out.println(matcher.group(1));
    System.out.println(matcher.group(2));
    System.out.println(matcher.group(3));
    }
    }
    }
      

  2.   


    String text = "我在!马路边?捡到一分钱";
    System.out.println(text.substring(text.indexOf("!")+1,text.indexOf("?")));
      

  3.   

    可以简化点:
      String str = "我在!马路边?捡到一分钱";
      str = str.replaceAll("[^!]*!([^?]*)[^$]*", "$1"); // 其实就这么一句够了。
      System.out.println(str);