私はこの文字列を持っています:
[Provider].[Provider]=[ProviderArea].&[X12: WALES]
その部分だけを掴みたいX12
。
私は試した:
(?<=: )\w+(?=\]$)
ただし、これはWALES
.
私も試しました:
^[^:]+:\s?
しかし、これはコロンの前とコロンを含む文字列全体を取得します。
どこが間違っていますか?
と\\w+
の間の単語 ( )を見つけたくない場合は、ルックアラウンドメカニズムを使用できます。&[
:
(?<=&\\[)\\w+(?=:)
これを試してみてください:
&\[([^:]+): [^]]+\]
& # a literal &, followed by
\[ # a literal [, followed by
( # begin capture
[^:]+ # one or more characters which are not a colon
) # end capture, followed by
: # a colon and a space (not shown), followed by
[^]]+ # one or more characters which are not a closing bracket, followed by
\] # a literal ]
Java 文字列の場合:
final Pattern p = Pattern.compile("&\\[([^:]+): [^]]+\\]");
final Matcher m = p.matcher(input);
if (m.find())
// result is in m.group(1)