使用正则表达式从字符串

时间:2018-02-12 13:24:13

标签: java regex

我试着看几个例子,但是无法弄清楚如何或最好的方法从这样的字符串中获取两个值:

setEditMode                                    | Ändringsläge

我可以获得第一个值但是如何在“|”之后得到第二个值?

我尝试过使用Pattern和Matcher,还使用了split()。

 public static void main(String[] args) {
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("C:\\Temp\\translate\\en.lang"));
            String line;
            while ((line = br.readLine()) != null) {

                String[] values = line.split("\\|");
                String v1 = values[0];
                String v2 = values[1];
                System.out.println(v2);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

java.lang.ArrayIndexOutOfBoundsException:1

当只在System.out中打印“line”时,我得到:

archiveLoad                                      | Loading archives
archiveLoadCount                                 | Archives uploaded:
archiveLoadStage                                 | Stage:
archiveLoadFilesCount                            | Files uploaded:
archiveLoadElapsedTime                           | Time elapsed:
archiveLoadInit                                  | Initialization
archiveLoadUndeletableIntervals                  | Loading undeletable intervals
archiveLoadDb                                    | Loading from database
archiveLoadDisk                                  | Loading from disk
archiveLoadProblemIntervals                      | Loading data about problems

2 个答案:

答案 0 :(得分:3)

您可以使用分段,如评论中所示

String line = "aaaa |  aaaa";
String[] values = line.split("\\|");
String v1 = values[0];
String v2 = values[1];

除了|之外,您还可以使用捕获两次的正则表达式:([^|]+)|([^|]+)

答案 1 :(得分:0)

这取决于您希望输出的方式,但可以使用以下内容轻松完成:

([a-zA-ZåäöÖÄÅ]+|[a-zA-ZåäöÖÄÅ]+)

将匹配所有字母,包括åäö/ÅÄÖ。在你的正则表达式中添加0-9以匹配数字:

([0-9a-zA-ZåäöÖÄÅ]+|[0-9a-zA-ZåäöÖÄÅ]+)

实例:http://rubular.com/r/xMZ1na9r0q