次のテキストがあります。
my-widget{
color: #{mycolors.getColors(1)}
}
...
my-tridget{
color: #{mycolors.getColors(2)}
...
}
...
区切り文字が #{mycolors.getColors()} で、前の区切り文字と現在の区切り文字の間のテキストが保存されるペアでテキストを分割したい。たとえば、そのようなペアの場合:
ペア 1: text: my-widget{ color: number: 1
ペア 2: text: } ... my-tridget{ color: number: 2
今まで使っていたもの、
Pattern p = Pattern.compile("(.*)#\\{mycolors.getColor\\(([0-9])\\)\\}", Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
Matcher m = p.matcher(data);
while (m.find){
String number = m.group(2).toLowerCase().trim();
String text = m.group(1);
}
ただし、番号とテキストは次のようになります。
テキスト: 色:番号: 1
テキスト: 色:数: 2
したがって、テキストは数行にまたがりません。どうすればこれを達成できますか? (Pattern.MULTILINEに加えてPattern.DOTALLは私を助けませんでした)