PatternとMatcherを使用して、次の文字列を複数の変数として返したいと思います。
ArrayList <Pattern> pArray = new ArrayList <Pattern>();
pArray.add(Pattern.compile("\\[[0-9]{2}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}\\]"));
pArray.add(Pattern.compile("\\[\\d{1,5}\\]"));
pArray.add(Pattern.compile("\\[[a-zA-Z[^#0-9]]+\\]"));
pArray.add(Pattern.compile("\\[#.+\\]"));
pArray.add(Pattern.compile("\\[[0-9]{10}\\]"));
Matcher iMatcher;
String infoString = "[03/12/13 10:00][30][John Smith][5554215445][#Comment]";
for (int i = 0 ; i < pArray.size() ; i++)
{
//out.println(pArray.get(i).toString());
iMatcher = pArray.get(i).matcher(infoString);
while (dateMatcher.find())
{
String found = iMatcher.group();
out.println(found.substring(1, found.length()-1));
}
}
}
プログラムの出力:
[03/12/13 10:00]
[30]
[John Smith]
[\#Comment]
[5554215445]
必要なのは、プログラムで角かっこと#文字を出力しないようにすることだけです。ループ内の部分文字列を使用して角かっこを印刷することは簡単に回避できますが、#文字を回避することはできません。#は文字列内のコメント識別子にすぎません。
これはループ内で実行できますか?