我得到了很多这种格式的字符串Person To Company
。例如Joe To Fedex
. 我需要的是一个简单的正则表达式,它可以得到这两个不同的部分。我需要这个人和公司。
我想出了这个:
"\\b\\s[Tt][Oo]\\s\\b"
虽然这不太正确,但它并没有真正帮助我真正解析出我需要的部分。关于如何在 Java 中实现这一点的任何想法?
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}
)。
像这样拆分字符串:
String[] split = someString.split("(?i)\\s+TO\\s+")
第一部分在 split[0] 中,第二部分在 split[1] 中
您只需要在 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));
}