この形式でたくさんの文字列を取得しますPerson To Company
。たとえばJoe To Fedex
。私が必要としているのは、これの2つの異なる部分を取得できる単純な正規表現です。人と会社が必要です。
私はこれを思いついた:
"\\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+")
最初のセクションは分割 [0] にあり、2 番目のセクションは分割 [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));
}