2

この形式でたくさんの文字列を取得しますPerson To Company。たとえばJoe To Fedex。私が必要としているのは、これの2つの異なる部分を取得できる単純な正規表現です。人と会社が必要です。

私はこれを思いついた:

"\\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+")

最初のセクションは分割 [0] にあり、2 番目のセクションは分割 [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 に答える