簡體   English   中英

正則表達式匹配-Java

[英]Regular Expression Matching -Java

我從以下格式的文件中獲取輸入:

(int1,int2) (int3,int4)

現在,我想在我的Java代碼中讀取int1,int2,int3和int4。 我該如何在Java中使用正則表達式匹配。 謝謝。

String[] ints = "(2,3) (4,5)".split("\\D+");
System.out.println(Arrays.asList(ints));
// prints [, 2, 3, 4, 5]

為了避免空值:

String[] ints = "(2,3) (4,5)".replaceAll("^\\D*(.*)\\D*$", "$1").split("\\D+");
System.out.println(Arrays.asList(ints));
// prints [2, 3, 4, 5]
Pattern p = Pattern.compile("\\((\\d+),(\\d+)\\)\\s+\\((\\d+),(\\d+)\\)");
String input = "(123,456) (789,012)";

Matcher m = p.matcher(input);

if (m.matches()) {
  int a = Integer.parseInt(m.group(1), 10);
  int b = Integer.parseInt(m.group(2), 10);
  int c = Integer.parseInt(m.group(3), 10);
  int d = Integer.parseInt(m.group(4), 10);
}

您可以執行以下操作:

String str = "(1,2) (3,4)";
Matcher m = Pattern.compile("\\((\\d+),(\\d+)\\) \\((\\d+),(\\d+)\\)").matcher(str);
if (m.matches()) {
   System.out.println(m.group(1)); // number 1
   ...
}

要建立自己的方法,可以使用更簡單的正則表達式:

String s = "(1,2) (3,4)";
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(s);
while (m.find()) {
    System.out.println(m.group());
}

這將起作用:

String[] values = s.substring(1).split("\\D+");

"\\\\((\\\\d*),(\\\\d*)\\\\)\\\\s*\\\\((\\\\d*),(\\\\d*)\\\\)"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM