String str1="C^(,5)^(2)马五^(5)^(,2)"我想得到下面的结果C^(,5)^(2)
马五^(5)^(,2)我用了一个正则表达式
String arr[] = str1.split("(?<=\\(\\d\\).\\(\\d\\))")但是没有分隔开

解决方案 »

  1.   


    public static void main(String[] args) {
    String str="C^(,5)^(2)马五^(5)^(,2)";
    String arr[] = str.split("(?<=\\(,\\d\\).\\(\\d\\))");
    System.out.println(java.util.Arrays.toString(arr));
    }
      

  2.   

    goldenfish1919,谢谢回复,是我没写清楚如果表达式为
    String str1="A^(2)D^(,5)C^(,5)^(2)马五^(5)^(,2)";
    String arr[] = str1.split("(?<=\\(,\\d\\).\\(\\d\\))");
    for(int i=0;i<arr.length;i++)
    {
       System.out.println(arr[i]);
    }
    结果变为了:
    A^(2)D^(,5)C^(,5)^(2)
    马五^(5)^(,2)而我想得到的结果是
    A^(2)
    D^(,5)
    C^(,5)^(2)
    马五^(5)^(,2)
      

  3.   

    表达式比较复杂也可能是
    String str1="A^(2)D^(,5)C^(,5)^(2)马五^(5)^(,2)HH^(5)^(,2)";我是想按英文字符或汉字作为分割副,把他们分割开来
      

  4.   

    这是我写的,但是结果不对,把前面的英文和汉字给弄没了
    String str1="A^(,5)D^(,5)^(2)C^(,5)^(2)马五^(5)^(,2)H^(5)^(,2)FF^(,2)";
            String arr[] = str1.split("[\u4e00-\u9fa5 a-zA-Z]");
            for(int i=0;i<arr.length;i++)
            {
             System.out.println(arr[i]);
            }
      

  5.   


    public static void main(String[] args) {
    String str1="A^(2)D^(,5)C^(,5)^(2)马五^(5)^(,2)";
    String arr[] = str1.split("(?<=\\))(?=[\\w\u4e00-\u9fa5])");
    for(int i=0;i<arr.length;i++)
    {
      System.out.println(arr[i]);
    }
    }