如何使用正则表达式提取前后含空格的Mywebsite.xx字符串?
提取"Mywebsite.xx"格式字符串的解决方案
你的需求是从文本里提取完整的Mywebsite.xx格式字符串(包括Mywebsite.co.uk这类多级后缀的情况),之前的代码存在两个问题:
- 正则
Mywebsite(.*?)仅捕获Mywebsite之后的内容,且惰性匹配会在第一个可停止的位置结束,无法拿到完整域名; - 你输出的是
group(1),也就是捕获的后缀部分,而非完整的目标字符串。
正确的正则与代码实现
可以使用这个正则匹配完整目标:Mywebsite\.[a-zA-Z0-9.]+
Mywebsite:固定匹配开头字符\.:转义后匹配实际的点(正则中点是通配符,必须转义)[a-zA-Z0-9.]+:匹配域名后缀部分,允许字母、数字和点(支持co.uk这类多级后缀),+表示至少包含一个字符
修正后的代码示例:
String mydata2 = "Mywebsite.de durchsuchen"; Matcher matcher = Pattern.compile("Mywebsite\\.[a-zA-Z0-9.]+").matcher(mydata2); if (matcher.find()) { System.out.println(matcher.group()); // 直接输出完整匹配结果,无需指定group(1) }
场景验证
对于Search Mywebsite.co.uk或Mywebsite.co.uk something这类文本,该正则都能准确提取出Mywebsite.co.uk。如果需要更严格的域名规范匹配,可将正则调整为Mywebsite\.[a-zA-Z0-9]+(?:\.[a-zA-Z0-9]+)*,但针对你的示例场景,第一个正则已足够使用。
内容的提问来源于stack exchange,提问作者golu
相关产品推荐
相关产品推荐

