【发布时间】:2013-10-24 21:04:12
【问题描述】:
我正在尝试使用 Java 编写一个 Minecraft Bukkit 插件,该插件会在聊天中找到一个 IP,所以我正在使用正则表达式。我需要的是正则表达式来查找字符串中的任何位置,一个字符后跟一个句点,然后是另一个字符,例如127.0.0.1 是有效的,但它还需要能够找到它周围的任何字符,例如@987654325 @。这是我当前的代码:
Pattern p = Pattern.compile("[a-z1-9]" + "." + "[a-z1-9]");
Matcher matcher = p.matcher(message);
if(matcher.matches()){
player.sendMessage(plugin.prefix + "§7You cannot advertise an IP address!");
event.setCancelled(true);
}
这段代码只会搜索像127.0 这样的东西,但正如我上面所说,我需要它在任何字符串中找到任意数量的[letter/number].[letter/number],如果这有意义的话。
【问题讨论】:
-
您应该阅读一些regex tutorial 或至少在提问之前尝试搜索regex for IP。
.是特殊字符,表示“除换行符以外的任何字符”,[a-z1-9]将匹配a-z或1-9范围内的 一个 字符,因此您需要添加量词。此外,如果您想匹配 IPv4,那么a-z在您的正则表达式中做了什么? -
@Pshemo 阅读我的评论以获得 plsgogame 的答案。
-
如果您还想找到像
jointhis.server.com这样的主机名,那么您绝对应该阅读我在之前评论中链接的问题答案。
标签: java regex string character