Java Netbeans:使用正则表达式

时间:2016-03-12 00:03:49

标签: java regex string netbeans split

启者

我在Java Netbeans工作。我试图使用正则表达式分割一个字符串(到一个字符串数组)。基本上,如果用户输入:

Hello World< 5>你好吗?雅虎>谷歌!

进入jTextArea,我希望上面的字符串输入一个名为arrayOfStringsToProcess的数组进行进一步处理。在序列结束时,arrayOfStringsToProcess的值应为:

{"Hello World", "5" , "How are you", "yahoo", "google!"} 

我对那里是否有换行符无动于衷。

当我尝试(在netbeans中):

String inputFromTextField = "";
String regularExpressionToSplit = "<>";
String[] arrayOfStringsToProcess;
inputFromTextArea = jTextArea23.getText();
arrayOfStringsToProcess = inputFromTextArea.split(regularExpressionToSplit);

代码编译并执行,但从jTextArea23获取的整个字符串被加载到arrayOfStringsToProcess的第0个元素中,好像没有发生任何分裂。

据我所知,上面的代码在netbeans之外完成了这项工作,但netbeans根本不想将字符串与正则表达式分开。

最后,当我将“正则表达式”缩减为单个分隔符时,例如"<" netbeans会以这种方式分割字符串:

{"Hello World", "5> How are you", "yahoo> google!"}

显然,这段代码会编译并执行,但不会产生我想要的输出。

有没有一种方法可以在Java netbeans中执行此操作而无需使用废话,例如计算字符串中<>的数量,并将字符串一次拆分一个?我无法事先知道用户将在jTextArea23中输入多少这些字符。

我确信这个确切的问题已在某处被问过,答案就在那里。我只是不知道在我的搜索中使用哪些关键字。任何帮助将不胜感激,

布伦特。

2 个答案:

答案 0 :(得分:1)

您需要使用的模式需要说:我想在><分开。这用regular expression表示|字符。所以你可以使用模式<|>。请注意,如果您还要分隔空格,可以添加\\s*以匹配零个或多个空格。

public static void main(String[] args) {
    String str = "Hello World <5> How are you < yahoo > google!";
    String[] tokens = str.split("\\s*<\\s*|\\s*>\\s*");
    System.out.println(Arrays.toString(tokens)); // prints "[Hello World, 5, How are you, yahoo, google!]"
}

答案 1 :(得分:0)

您当前的正则表达式<>代表字符串"<>"。如果您要分为<>,则:

  • 您正在寻找由OR

    代表的|运算符
    split("<|>")
    
  • 您也可以使用character class

    split("[<>]")