0

「Hello, call me XXX.」という文の部分文字列を見つける必要があります。文は非常に長くなる可能性があり、名前が何であるかを識別するのに役立つ唯一のことは、名前が常に fromat にあるという事実です"call me"+space+name"+dot。それにもかかわらず、文は次のようにも見える可能性がありますhello, call me. call me xxx.

Call me John. ⇒ John

Call me Call me John. ⇒ prohibited - confusing

Call me. Call me John. ⇒ John

Call me  Call me John. ⇒ John

Call me Peter .Call me John. ⇒ John

Call me Peter. Call me John. ⇒ prohibited - more then one name...

名前は、\r、\n、\0、およびドットを除く任意の文字列にすることができます。

誰かが正規表現を定義するのを手伝ってくれたら幸いです。私は2時間以上理解しようとしていますが、成功していません...

4

3 に答える 3

2

正規表現はあなたのために働くはずです:

"(?<=call me )[^.]*"
于 2013-02-15T13:17:12.740 に答える
1

名前にスペースを含めることはできないと仮定します。

String string = "Call me Peter .Call me John.";
Matcher matcher = Pattern.compile ("Call me ([^\r\n\0\\. ]+)\\.").matcher (string);
if (matcher.find ())
{
    String name = matcher.group (1);
    if (matcher.find ()) throw new Exception ("Prohibited: too many matches!");
    System.out.println (name);
}
else throw new Exception ("Prohibited: no matches!");
于 2013-02-15T13:23:00.853 に答える
0

このようなもの: .*Call\ me\ (.[\w]+).?

オンラインですべての要件を満たしているかどうかを確認してください: http://www.rubular.com/

于 2013-02-15T13:19:43.243 に答える