4

ここで同様の質問を見つけました。しかし、私はそれを働かせませんでした:

「my_token_string」のような文字列があり、トークン「my_」、「_token_」、および「_string」を返す正規表現が必要です。

別のソフトウェアの一部であるため、Java コードを変更できないことに注意してください。私にできることは、キャプチャするパターンとグループを指定することだけです:-)

これは私がテストしたものです:

String p = "(?=(_[^_]*_?))";
int group = 1;
String test = "my_token_string";

Matcher m = Pattern.compile(p).matcher(test);
while (m.find()) {
    System.out.println(m.group(group));
}

しかしもちろん、これはトークン "_token_" と "_string" のみを返します。

4

2 に答える 2

4

で試すことができます"(?=((^|_).+?(_|$)))"。グループ番号として を使用します1

トークン_は、入力または入力の開始 ( ) で開始し、入力の終了 ( ^) で終了し_ます$。代わりに.+?使用できます[^_]+が、私はこのバージョンを好みます。

于 2013-03-21T14:36:51.290 に答える
3

これは RegEx で実現でき(?=((?:_|^)[^_]*+(?:_|$)))
ます: デモの説明はこちら: http://regex101.com/r/tB0bZ4

于 2013-03-21T14:38:18.700 に答える