Java Regexp与url的域匹配
我想使用Java正则表达式来匹配url的域,例如, 对于www.table.google.com,我想从url中去掉“google”,即这个url字符串中的最后一个单词Java Regexp与url的域匹配,java,regex,Java,Regex,我想使用Java正则表达式来匹配url的域,例如, 对于www.table.google.com,我想从url中去掉“google”,即这个url字符串中的最后一个单词 任何帮助都将不胜感激 这实际上取决于输入的复杂性 下面是一个非常简单的正则表达式: .+\\.(.+)\\..+ 它获取点内的内容\\. 下面是该模式的一些示例:。 如您所见,它适用于简单的输入,但不适用于复杂的URL 但是为什么要重新发明轮子呢?有很多非常好的库可以正确解析任何复杂的url。当然,对于简单的输入,很容易构建一
任何帮助都将不胜感激 这实际上取决于输入的复杂性 下面是一个非常简单的正则表达式:
.+\\.(.+)\\..+
它获取点内的内容\\.
下面是该模式的一些示例:。
如您所见,它适用于简单的输入,但不适用于复杂的URL
但是为什么要重新发明轮子呢?有很多非常好的库可以正确解析任何复杂的url。当然,对于简单的输入,很容易构建一个小型正则表达式。因此,如果这不能解决您输入的问题,那么请回调,我将调整regex模式
请注意,您也可以使用简单的拆分,如:
String[] elements = input.split("\\.");
String secondToLastElement = elements[elements.length - 2];
但不要忘记索引边界检查
或者,如果您搜索一个非常快速的解决方案,则从最后一个位置开始遍历输入。继续操作直到找到第一个点,继续操作直到找到第二个点。然后使用
input.substring(index1,index2)提取该部分代码>
还有一个委托方法正是为了达到这个目的,即String#lastIndexOf
(请参阅)
请看以下代码片段:
String input = ...
int indexLastDot = input.lastIndexOf('.');
int indexSecondToLastDot = input.lastIndexOf('.', indexLastDot);
String secondToLastWord = input.substring(indexLastDot, indexSecondToLastDot);
也许界限是1,还没有测试代码,但是你知道了。也不要忘记绑定检查
这种方法的优点是速度非常快,可以直接处理字符串的内部结构,而无需创建副本。这取决于输入的复杂性
private static final Pattern URL_MATCH_GET_SECOND_AND_LAST =
Pattern.compile("www.(.*)//.google.(.*)", Pattern.CASE_INSENSITIVE);
String sURL = "www.table.google.com";
if (URL_MATCH_GET_SECOND_AND_LAST.matcher(sURL).find()){
Matcher matchURL = URL_MATCH_GET_SECOND_AND_LAST .matcher(sURL);
if (matchURL .find()) {
String sFirst = matchURL.group(1);
String sSecond= matchURL.group(2);
}
}
下面是一个非常简单的正则表达式:
.+\\.(.+)\\..+
它获取点内的内容\\.
下面是该模式的一些示例:。
如您所见,它适用于简单的输入,但不适用于复杂的URL
但是为什么要重新发明轮子呢?有很多非常好的库可以正确解析任何复杂的url。当然,对于简单的输入,很容易构建一个小型正则表达式。因此,如果这不能解决您输入的问题,那么请回调,我将调整regex模式
请注意,您也可以使用简单的拆分,如:
String[] elements = input.split("\\.");
String secondToLastElement = elements[elements.length - 2];
但不要忘记索引边界检查
或者,如果您搜索一个非常快速的解决方案,则从最后一个位置开始遍历输入。继续操作直到找到第一个点,继续操作直到找到第二个点。然后使用input.substring(index1,index2)提取该部分代码>
还有一个委托方法正是为了达到这个目的,即String#lastIndexOf
(请参阅)
请看以下代码片段:
String input = ...
int indexLastDot = input.lastIndexOf('.');
int indexSecondToLastDot = input.lastIndexOf('.', indexLastDot);
String secondToLastWord = input.substring(indexLastDot, indexSecondToLastDot);
也许界限是1,还没有测试代码,但是你知道了。也不要忘记绑定检查
这种方法的优点是速度非常快,可以直接处理字符串的内部结构,而无需创建副本。我的尝试:
private static final Pattern URL_MATCH_GET_SECOND_AND_LAST =
Pattern.compile("www.(.*)//.google.(.*)", Pattern.CASE_INSENSITIVE);
String sURL = "www.table.google.com";
if (URL_MATCH_GET_SECOND_AND_LAST.matcher(sURL).find()){
Matcher matchURL = URL_MATCH_GET_SECOND_AND_LAST .matcher(sURL);
if (matchURL .find()) {
String sFirst = matchURL.group(1);
String sSecond= matchURL.group(2);
}
}
(?<scheme>https?:\/\/)?(?<subdomain>\S*?)(?<domainword>[^.\s]+)(?<tld>\.[a-z]+|\.[a-z]{2,3}\.[a-z]{2,3})(?=\/|$)
我的尝试:
(?<scheme>https?:\/\/)?(?<subdomain>\S*?)(?<domainword>[^.\s]+)(?<tld>\.[a-z]+|\.[a-z]{2,3}\.[a-z]{2,3})(?=\/|$)
那么google.co.nz
,google.com.au
,goo.gl
呢?如果您已经知道需要从second last word
获取字符串,那么您可以使用string
的一些utils函数来获取它。使用lastIndexOf(“.”
删除部分.com
,然后再次使用它获取部分google
这取决于输入的复杂性。。。下面是一个非常简单的正则表达式:+\\.(.+)\\\..+
,下面是该模式的一些示例:。但是为什么要重新发明轮子呢?有很多非常好的库可以正确解析任何复杂的url。当然,对于简单的输入,很容易构建一个小的正则表达式。例如google.co.nz就是“co”。我只能以java正则表达式的形式编写,我不能使用任何代码,因为它用于一些插件,他们只接受java正则表达式关于google.co.nz
,google.com.au
,goo.gl
?如果您已经知道需要从second last word
中获取字符串,那么您可以使用string
的一些utils函数来获取它。使用lastIndexOf(“.”
删除部分.com
,然后再次使用它获取部分google
这取决于输入的复杂性。。。下面是一个非常简单的正则表达式:+\\.(.+)\\\..+
,下面是该模式的一些示例:。但是为什么要重新发明轮子呢?有很多非常好的库可以正确解析任何复杂的url。当然,对于简单的输入,很容易构建一个小的正则表达式。例如google.co.nz就是“co”。我只能以java正则表达式的形式编写,我不能使用任何代码,因为它用于一些插件,它们只接受java正则表达式