我有以下一段从 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/ '或' http://anyaddress.anything/ '或' https://www.anyaddress。任何/ '或' https://anyaddress.anything/ '
我只需要提取“anyaddress”部分。我在以前的帖子中搜索过我们可以在java中使用正则表达式检查多个模式吗?发现我只需要加“|”。但例如,当我编辑我的正则表达式以通过添加包含第二个模式时:
Pattern regex = Pattern.compile(
"(?<=http://www.) | (?<=http://)" + "[^/]*", Pattern.COMMENTS);
我的程序将地址提取为:www.anyaddress.anything,而我只需要“anyaddress.anything/”部分,此外程序正确提取了没有“www”的地址。以前无法提取。
谁能向我澄清我的错误在哪里?并举例说明如何包含多个模式以使我的程序正确提取上述 4 种格式中的任何一种格式的链接?