CSVファイルから文字列を読み取る次のJavaコードがあります。次に、文字列を分割して確認し、パターンに含まれる「anyaddress」の部分を抽出します: " http://www.anyaddress.anything/ "
//Split the file strings since it is CSV file
while((Line=in.readLine())!=null)
strings = Line.split(",");
for(int i=0; i<strings.length; i++)
{
Pattern regex = Pattern.compile(
"(?<=http://www.)" + "[^/]*", Pattern.COMMENTS);
Matcher regexMatcher = regex.matcher(strings[i]);
if (regexMatcher.find())
{
//Returns the input subsequence matched by the previous match.
ResultString = regexMatcher.group();
out.write(ResultString);
out.newLine();
} //end if
} //end for loop
in.close();
out.close();
ここで、テキストファイルに次の異なる形式の文字列が含まれている可能性があることがわかりました:' http://www.anyaddress.anything/ ' OR'http://anyaddress.anything/ ' OR'https ://www.anyaddress。何でも/ 'または' https://anyaddress.anything/ '
「anyaddress」の部分のみを抽出する必要があります。以前の投稿で検索しましたが、Javaで正規表現を使用して複数のパターンを確認できますか?「|」を追加するだけでよいことがわかりました。しかし、たとえば、次を追加して2番目のパターンを含めるように正規表現を編集した場合:
Pattern regex = Pattern.compile(
"(?<=http://www.) | (?<=http://)" + "[^/]*", Pattern.COMMENTS);
私のプログラムはアドレスをwww.anyaddress.anythingとして抽出しましたが、必要なのは「anyaddress.anything /」の部分だけであり、それに加えて、プログラムは「www」を持たないアドレスを正しく抽出します。以前は抽出できませんでした。
誰かが私の間違いがどこにあるのか私に明確にすることができますか?プログラムに上記の4つの形式のいずれかでリンクを正しく抽出させるために、複数のパターンを含めるにはどうすればよいですか?