我得到了很多字符串在這種格式Person To Company
。例如Joe To Fedex
。我需要的是一個簡單的正則表達式,它可以得到這兩個不同的部分。我需要這個人和公司。正則表達式爲「到」在java
我想出了這一點:
"\\b\\s[Tt][Oo]\\s\\b"
雖然這個心不是完全正確的,它並沒有真正幫助我實際上解析出我需要的作品。有關如何在Java中完成的任何想法?
我得到了很多字符串在這種格式Person To Company
。例如Joe To Fedex
。我需要的是一個簡單的正則表達式,它可以得到這兩個不同的部分。我需要這個人和公司。正則表達式爲「到」在java
我想出了這一點:
"\\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}
)。
謝謝您的回覆。所以我給了這個鏡頭。有效。但假設人和公司可以是多個詞。例如'Joe Smith到Fedex Delivery Services'。然後這不能解析它們。任何想法如何可以更新來做到這一點? – user489041 2012-08-08 15:20:21
如果那真的是你的整個字符串,那麼我會用@ FranciscoPaulo的建議去。否則,我們需要更多信息如何找出名稱的開始和結束位置。 – 2012-08-08 15:23:32
我想我可以將它編輯爲人物之前的所有內容,並且To之後的所有內容都是公司 – user489041 2012-08-08 15:24:32
分割字符串是這樣的:
String[] split = someString.split("(?i)\\s+TO\\s+")
第一部分在分割[0],第二個在拆分[1]
所有你需要的是讓在匹配器組方法。
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));
}
可以做regx =「(\\ w *)\\ sto \\ s(\\ w *)」; ... matcher = Pattern.compile(regx,Pattern.CASE_INSENSITIVE).matcher(src);' – 2012-08-08 18:06:37
所有將要做的就是檢測一個由空白包圍的case-insentive'to'。你需要捕獲組('()')來捕獲joe/fedex文本。 – 2012-08-08 14:59:47