如何使用正则表达式的数字?

时间:2014-04-02 13:55:15

标签: java regex

我有一个字符串,其中包含数字和单词,我想在java中使用正则表达式。

String  s="S.No.DistrictMarketPrice 1 Agra Achhnera NIL 2 Agra Agra 1450 3 Agra Fatehabad NIL 4 Agra Fatehpur Sikri 8765 5 Agra Jagner NIL 6 Agra Jarar NIL 7 Agra Khairagarh NIL 8 Agra Shamshabad NIL 9 Aligarh Atrauli 1298 10 Aligarh Chharra NIL";

我想打破这个字符串。我希望新行中的每个字符串都应该从精确的serino开始

如何获得此输出

S.No  .District  Market                Price
1      Agra      Achhnera              NIL
2      Agra      Agra                 1450
3      Agra      Fatehabad             NIL
4      Agra      Fatehpur Sikri       8765 

3 个答案:

答案 0 :(得分:8)

您可以用新行+数字替换每个号码:

String multiline = s.replaceAll("(\\d+)", "\n$1");
  • (\\d+)捕获数字
  • $1指的是捕获的数字

答案 1 :(得分:2)

将一个或多个数字的任何实例替换为系统行分隔符,后跟匹配的数字。

因此:

String  s = "S.No.DistrictMarketPrice 1 Agra Achhnera NIL 2 Agra Agra NIL 3 Agra Fatehabad NIL 4 Agra Fatehpur Sikri NIL 5 Agra Jagner NIL 6 Agra Jarar NIL 7 Agra Khairagarh NIL 8 Agra Shamshabad NIL 9 Aligarh Atrauli NIL 10 Aligarh Chharra NIL";

System.out.println(
    s.replaceAll("\\d+", System.getProperty("line.separator") + "$0")
);

<强>输出

S.No.DistrictMarketPrice 
1 Agra Achhnera NIL 
2 Agra Agra NIL 
3 Agra Fatehabad NIL 
4 Agra Fatehpur Sikri NIL 
5 Agra Jagner NIL 
6 Agra Jarar NIL 
7 Agra Khairagarh NIL 
8 Agra Shamshabad NIL 
9 Aligarh Atrauli NIL 
10 Aligarh Chharra NIL

答案 2 :(得分:1)

使用这个:

String []splits = s.split("(?<!\\d)(?=\\d+)");

splits包含每个索引的行:

S.No.DistrictMarketPrice 
1 Agra Achhnera NIL 
2 Agra Agra NIL 
3 Agra Fatehabad NIL 
4 Agra Fatehpur Sikri NIL 
5 Agra Jagner NIL 
6 Agra Jarar NIL 
7 Agra Khairagarh NIL 
8 Agra Shamshabad NIL 
9 Aligarh Atrauli NIL 
10 Aligarh Chharra NIL