最初の「:」に続いて「。」までの不明な数の文字列を検索する単純な正規表現を考え出そうとしています。が見つかり、その間の文字列を返します。
例
test example:IWANTTHISBACK. [8909] test
結果
IWANTTHISBACK
どんな助けでも素晴らしいでしょう
最初の「:」に続いて「。」までの不明な数の文字列を検索する単純な正規表現を考え出そうとしています。が見つかり、その間の文字列を返します。
例
test example:IWANTTHISBACK. [8909] test
結果
IWANTTHISBACK
どんな助けでも素晴らしいでしょう
最初の「:」に続いて「。」までの不明な数の文字列を検索する単純な正規表現を考え出そうとしています。が見つかり、その間の文字列を返します。
あなたは基本的にあなた自身の質問に答えました。これを正規表現に変換すると、かなり単純に見えます。
最初の':'
:
'。'まで不明な数の文字列が続きます。
[^.]* matches all non dots and stops at first dot.
したがって、これらすべてを一緒に書くと、次のようになります。
:([^.]*)
後方参照$1
には文字列が含まれます。
これを試して
(?<=:)([^\.]*?)(?=\.)
説明
<!--
(?<=:)([^\.]*?)(?=\.)
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 «\.»
-->
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