簡體   English   中英

正則表達式匹配“ | ”

[英]Regular Expression to Match “ | ”

我試圖在它的Scanner類上使用 Java 的useDelimiter方法來做一些簡單的解析。 基本上每一行都是一個由“|”分隔的記錄,例如:

2 | John Doe
3 | Jane Doe
4 | Jackie Chan

該方法將要匹配的正則表達式作為參數。 可有人請我提供的正則表達式將匹配| (兩邊用一個空格隔開的豎條)。

謝謝,我真的很感激!

我想出了\\s\\|\\s在 Java 中將表示為"\\\\s\\\\|\\\\s" 我不知道這是否是最好的。 我不需要任何硬核,只需要一些有用的東西,這似乎是:)

很抱歉回答我自己的問題,我想在輸入后它幫助我思考。

這是一個解析字符串(或整個文件,Scanner 接受兩者)並從每一行中提取數字和名稱的代碼片段:

String s = 
    "1 | Mr John Doe\n" + 
    "2 | Ms Jane Doe\n" + 
    "3 | Jackie Chan\n";

Pattern pattern = Pattern.compile("(\\d+) \\| ((\\w|\\s)+)");
Scanner scan = new Scanner(s);
while (scan.findInLine(pattern) != null) {
    MatchResult match = scan.match();

    // Do whatever appropriate with the results
    System.out.printf("N° %d is %s %n", Integer.valueOf(match.group(1)), match.group(2));

    if (scan.hasNextLine()) {
        scan.nextLine();
    }
}

此代碼片段產生以下結果:

N° 1 is Mr John Doe
N° 2 is Ms Jane Doe
N° 3 is Jackie Chan
" \| " 

會工作,你需要轉義引號和 |

不要忘記包含 * 以匹配重復字符

\S*\s*\|\s*[\S\t ]*

編輯 - 你也可以簡單地使用這個.*\\|.*

......

^[ \| ]?$

暫無
暫無

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

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