[英]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.