java 如何使用regex提取字符串,前后带空格

83qze16e  于 2023-02-02  发布在  Java
关注(0)|答案(4)|浏览(130)

在下面的例子中,我想提取“我的网站.xx”。2我该怎么做呢?

Search Mywebsite.de  ----> Mywebsite.de
Mywebsite.de durchsuchen ----> Mywebsite.de
Search Mywebsite.co.uk ----> Mywebsite.co.uk
Mywebsite.co.uk something ----> Mywebsite.co.uk

我试过了,但不管用:

String mydata2 = "Mywebsite.de durchsuchen";
Matcher matcher = Pattern.compile("Mywebsite(.*?)").matcher(mydata2);
if (matcher.find())
{
    System.out.println(matcher.group(1));
}
mlnl4t2r

mlnl4t2r1#

您可以使用Mywebsite\.([a-z]+\.[a-z]+)

public static void extractDomain(String domain){
  Pattern domainPattern = Pattern.compile("Mywebsite\.([a-z]+\.[a-z]+)");
  Matcher match = domainPattern.matcher(domain);
 System.out.println("Mywebsite"+ match.group(1));

}
7rfyedvj

7rfyedvj2#

您可以尝试对可能的字符串的输入数组进行这种模式匹配。前四个字符串将匹配。

String patternStr = "(\\s|^)mywebsite([.][a-z][a-z]){1,2}(\\s|$)";
Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
String [] stringsToMatch = {
    "Mywebsite.co.uk xyz",
    "abc Mywebsite.co.uk",
    "abc Mywebsite.co.uk xyz",
    "Mywebsite.co.uk",
    "Mywebsite.co.uk.us",
    "Mywebsite"
};

for (String str : stringsToMatch) {
    Matcher matcher = pattern.matcher(str);
    System.out.println(str);
    if (matcher.find()) {
        System.out.println("    " + str.substring(matcher.start(), matcher.end()));
    }
    else {
        System.out.println("    No match");
    }
}
6yt4nkrj

6yt4nkrj3#

要从字符串中查找域名,可以使用regex,例如
(?:http[s]?:\/\/)?(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+
这个程序将从您的字符串中捕获域列表

public static List<String> extractDomainNames(String input) {
        List<String> domainNames = new ArrayList<>();
        String domainNamePattern = "(?:http[s]?://)?(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+";
        Pattern pattern = Pattern.compile(domainNamePattern);
        Matcher matcher = pattern.matcher(input);
        while (matcher.find()) {
            domainNames.add(matcher.group());
        }
        return domainNames;
    }
falq053o

falq053o4#

你可以试试这个正则表达式:Mywebsite\.[^\s]+

String input = "Mywebsite.de durchsuchen";
Pattern regexPattern = Pattern.compile("Mywebsite\.[^\s]+");
Matcher regexMatcher = regexPattern.matcher(input);
while (regexMatcher.find()) {
    System.out.println(regexMatcher.group());
}

参见正则表达式演示here

相关问题