2

我得到了很多这种格式的字符串Person To Company。例如Joe To Fedex. 我需要的是一个简单的正则表达式,它可以得到这两个不同的部分。我需要这个人和公司。

我想出了这个:

"\\b\\s[Tt][Oo]\\s\\b"

虽然这不太正确,但它并没有真正帮助我真正解析出我需要的部分。关于如何在 Java 中实现这一点的任何想法?

4

3 回答 3

3
Pattern regex = Pattern.compile("(\\S+)\\s+to\\s+(\\S+)", Pattern.CASE_INSENSITIVE);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    fromstr = regexMatcher.group(1);
    tostr = regexMatcher.group(2);

} 

应该为此工作。(\S匹配任何非空白字符。如果你只想匹配字母,你可以使用\p{L})。

于 2012-08-08T15:02:13.833 回答
2

像这样拆分字符串:

String[] split = someString.split("(?i)\\s+TO\\s+")

第一部分在 split[0] 中,第二部分在 split[1] 中

于 2012-08-08T15:02:32.277 回答
0

您只需要在 Matcher 中获取 group 方法。

String regx = "(\\w*)\\s[Tt][Oo]\\s(\\w*)";
String src = "Joe To Fedex";
Matcher matcher = Pattern.compile(regx).matcher(src);
while(matcher.find()){
    System.out.println(matcher.group(0));
    System.out.println(matcher.group(1));
    System.out.println(matcher.group(2));
}
于 2012-08-08T15:15:23.750 回答