正则表达式分裂字符串

我有这个代码打印:

[( ?Random =  ), ( ?Random =  )] 

我试图在[#]拆分,但它没有用。

我应该分成什么才能让我得到#之后的部分:你好,再见

 Query query = QueryFactory.create(queryString); QueryExecution qe= QueryExecutionFactory.create(query, model); ResultSet resultset = qe.execSelect(); ResultSet results = ResultSetFactory.copyResults(resultset); final ResultSet results2 = ResultSetFactory.copyResults(results); System.out.println( "== Available Options ==" ); ResultSetFormatter.out(System.out, results, query); Scanner input = new Scanner(System.in); final String inputs; inputs = input.next(); final String[] indices = inputs.split("\\s*,\\s*"); final List selectedSolutions = new ArrayList( indices.length) { { final List solutions = ResultSetFormatter .toList(results2); for (final String index : indices) { add(solutions.get(Integer.valueOf(index))); } } }; System.out.println(selectedSolutions); 

如果我理解正确,您只想通过正则表达式从输入字符串中提取“Hello”和“Bye”。

在这种情况下,我只会使用#>之间的迭代匹配,如下所示:

 // To clarify, this String is just an example // Use yourScannerInstance.nextLine to get the real data String input = "[( ?Random =  ), " + "( ?Random =  )]"; // Pattern improved by Brian // was: #(.+?)> Pattern p = Pattern.compile("#([^>]+)>"); Matcher m = p.matcher(input); // To clarify, printing the String out is just for testing purpose // Add "m.group(1)" to a Collection to use it in further code while (m.find()) { System.out.println(m.group(1)); } 

输出:

 Hello Bye 

你可以试试这个

 String[] str= your_orginal_String.split(","); 

然后你可以按照以下方式取出#之后的部分

 String[] s=new String[2]; int j=0; for(String i:str){ s[j]=i.split("#",2)[1]; j++; } 

您可能需要一些格式。 对于结果String[] s ,如下所示

  String str = "[( ?Random =  ), ( ?Random =  )]"; String[] arr = str.split(","); String[] subArr = new String[arr.length]; int j = 0; for (String i : arr) { subArr[j] = i.split("#", 2)[1].replaceAll("\\>|\\)|\\]", ""); j++; } System.out.println(Arrays.toString(subArr)); 

出局:

  [Hello , Bye ] 

试试正则表达式:

 (?<=#)([^#>]+) 

例如:

 private static final Pattern REGEX_PATTERN = Pattern.compile("(?<=#)([^#>]+)"); public static void main(String[] args) { String input = "[( ?A =  ), ( ?A =  )]"; Matcher matcher = REGEX_PATTERN.matcher(input); while (matcher.find()) { System.out.println(matcher.group()); } } 

输出:

 Hello World