用于在模式之后提取值的正则表达式

时间:2015-03-13 12:45:56

标签: java regex

如何在Java中编写一个给定特定模式的正则表达式,在其后面提取值并将其存储在数组中。如果在该模式之后没有值,则应该在数组中添加一个空白(即“”)。

作为模式&&的示例,我应该得到以下输入和输出:

  input=&&&&&&&&&&
  o/p=["","","",""];

  input=&&A&&123&&B&&985
  o/p=["A",123,B,985];
  input=&& && &&A&&488
  o/p=["","","A","488"]

4 个答案:

答案 0 :(得分:1)

您可以在Scanner上设置分隔符,然后迭代其值。

    public String[] getTokens() {   
        LinkedList<String> list = new LinkedList<String>();         
        Scanner s = new Scanner(input).useDelimiter("\\&\\&");
        while(s.hasNext()) {
            list.add(s.next());
        }
        String[] a = new String[list.size()];
        return list.toArray(a);
    }

答案 1 :(得分:0)

您可以尝试使用split。您可以省略第一个结果,并使用以下代码输出中的其余部分。

String testStr = "&&A&&123&&B&&985";
String[] splitString = testStr.split("(&&)");
for (String token : splitString) {
    System.out.println(token);
}

答案 2 :(得分:0)

public static void main (String[] args) {
    String str = "&&A&&&&&&D&&123&&XX&&";
    String delimiters = "([&]{2})";

    // analyzing the string
    String[] tokensVal = str.split (delimiters);

    System.out.print ("[");
    for (String token: tokensVal) {
        // Print empty and space tokens
        if(token.isEmpty () || token.equals (" ")){
            System.out.print ("\"\",");
        } else {
            System.out.print (token + ",");
        }
    }
    System.out.print ("]");
}

O/P ["",A,"",D,]

当只有&amp;在整个字符串中例如“&amp;&amp;&amp;&amp;&amp;&amp;&amp;”然后你必须以特殊方式处理它。

答案 3 :(得分:0)

我很抱歉我不懂Java,但假设它有能力替换和捕获,你可以分两步完成。

首先是替换任何出现的

&&  

&&\s

其次是迭代从

返回的捕获结果
&{2}([^&]+)

并删除任何结果的多余空间