gpt4 book ai didi

Java正则表达式在任何字符串中查找字符

转载 作者:行者123 更新时间:2023-12-02 06:36:37 25 4
gpt4 key购买 nike

我正在尝试使用 Java 编写一个 Minecraft Bukkit 插件,该插件会发现 IP 何时被放置在聊天中,因此我使用正则表达式。我需要的是正则表达式来查找字符串中的任何位置,一个字符后跟一个句点,后跟另一个字符,例如 127.0.0.1有效,但它还需要能够找到它及其周围的任何字符,例如 This IP: 127.0.0.1 is your localhost IP 。这是我当前的代码:

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]在任何字符串中,如果有意义的话。

最佳答案

What I need is regex to find anywhere in the string, a character followed by a period followed by another character. I need it to find any amount of [letter/number].[letter/number] in any string, if that made sense...

您可以在此处使用单词边界 \b 来匹配较大文本中的这些模式。

对于一个简单的解决方案,您可以使用类似的东西。

\\b((?:(?:[0-9]{1,3}\\.){3}[0-9]{1,3}|(?:[a-z0-9]+(?:-[a-z0-9]+)*\\.)+[a-z]{2,4}))\\b

示例:

import java.util.regex.*;

class rTest {
public static void main (String[] args) {
String in = "Let's match 127.0.0.1 being valid, or this IP: 127.0.0.1 and joinTHIS.server.com or build 1.2";
String re = "\\b((?:(?:[0-9]{1,3}\\.){3}[0-9]{1,3}|(?:[a-z0-9]+(?:-[a-z0-9]+)*\\.)+[a-z]{2,4}))\\b";
Pattern p = Pattern.compile(re, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(in);
while (m.find()) {
System.out.println(m.group(1));
}
}
}

输出

127.0.0.1
127.0.0.1
joinTHIS.server.com

关于Java正则表达式在任何字符串中查找字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19576622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com