1

最初の「:」に続いて「。」までの不明な数の文字列を検索する単純な正規表現を考え出そうとしています。が見つかり、その間の文字列を返します。

test example:IWANTTHISBACK. [8909] test

結果

IWANTTHISBACK

どんな助けでも素晴らしいでしょう

4

3 に答える 3

3

最初の「:」に続いて「。」までの不明な数の文字列を検索する単純な正規表現を考え出そうとしています。が見つかり、その間の文字列を返します。

あなたは基本的にあなた自身の質問に答えました。これを正規表現に変換すると、かなり単純に見えます。

最初の':'

:

'。'まで不明な数の文字列が続きます。

[^.]* matches all non dots and stops at first dot.

したがって、これらすべてを一緒に書くと、次のようになります。

:([^.]*)

後方参照$1には文字列が含まれます。

于 2012-05-24T11:24:30.433 に答える
2

これを試して

(?<=:)([^\.]*?)(?=\.)

説明

<!--
(?<=:)([^\.]*?)(?=\.)

Options: case insensitive

Assert that the regex below can be matched, with the match ending at this position (positive lookbehind) «(?<=:)»
   Match the character “:” literally «:»
Match the regular expression below and capture its match into backreference number 1 «([^\.]*?)»
   Match any character that is NOT a . character «[^\.]*?»
      Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Assert that the regex below can be matched, starting at this position (positive lookahead) «(?=\.)»
   Match the character “.” literally «\.»
-->
于 2012-05-24T11:23:02.413 に答える
0

Javaの場合

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile(":([^.]*)\\.");
        Matcher matcher = pattern.matcher("test example:IWANTTHISBACK. :abc.[8909] test");
        if (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

出力:

IWANTTHISBACK
于 2012-05-24T11:24:49.623 に答える