正则表达式分裂字符串
我有这个代码打印:
[( ?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