OllamaYi-Coder-1.5B实战快速生成电子邮件提取与URL验证代码1. 项目背景与需求在日常开发工作中我们经常需要处理文本数据其中最常见的需求之一就是从文本中提取电子邮件地址以及验证URL的有效性。这些功能看似简单但要编写健壮、高效的实现却需要花费不少时间。传统做法是手动编写正则表达式处理各种边界情况反复测试和调试使用Yi-Coder-1.5B代码生成模型我们可以快速获得高质量的代码实现大大提升开发效率。本文将展示如何利用这个强大的工具在几分钟内完成这两个常见功能的开发。2. 环境准备与模型部署2.1 安装Ollama框架首先需要安装Ollama框架这是一个优秀的本地大模型部署工具。根据你的操作系统选择对应的安装方式Windows系统访问Ollama官网下载安装程序双击运行安装向导完成安装后打开命令提示符验证是否安装成功macOS/Linux系统curl -fsSL https://ollama.com/install.sh | sh2.2 下载Yi-Coder-1.5B模型安装完成后通过以下命令下载并启动Yi-Coder-1.5B模型ollama run yi-coder:1.5b首次运行会自动下载模型文件约3GB下载完成后会自动进入交互模式。3. 电子邮件提取功能实现3.1 功能需求分析我们需要实现一个Python函数能够从任意文本中提取所有电子邮件地址支持常见的电子邮件格式排除无效或格式错误的地址返回格式统一的列表3.2 生成提取函数代码在Ollama交互界面中输入以下提示请生成一个Python函数从输入文本中提取所有有效的电子邮件地址。要求 1. 函数名为extract_emails 2. 参数为text字符串 3. 返回找到的所有电子邮件地址列表 4. 包含完整的文档字符串和类型注解模型生成的完整代码import re from typing import List def extract_emails(text: str) - List[str]: 从输入文本中提取所有有效的电子邮件地址 参数: text (str): 需要提取的文本内容 返回: List[str]: 包含所有有效电子邮件地址的列表 示例: extract_emails(联系我testexample.com或adminsite.org) [testexample.com, adminsite.org] # 电子邮件正则表达式模式 pattern r\b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\b emails re.findall(pattern, text) return emails3.3 代码解析与优化生成的代码已经相当完善但我们还可以做一些改进添加重复检查确保返回的列表中没有重复的电子邮件忽略大小写统一转换为小写格式验证域名检查域名部分是否有效优化后的版本def extract_emails(text: str) - List[str]: 改进版电子邮件提取函数增加去重和格式统一 参数: text (str): 需要提取的文本内容 返回: List[str]: 包含所有唯一有效电子邮件地址的列表 pattern r\b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\b emails list(set(re.findall(pattern, text))) # 使用set去重 return [email.lower() for email in emails] # 统一为小写4. URL验证功能实现4.1 功能需求分析URL验证功能需要检查字符串是否符合URL格式支持http、https、ftp等常见协议验证域名有效性处理特殊字符和编码4.2 生成验证函数代码向模型输入以下提示请生成一个Python函数来验证URL格式是否有效。要求 1. 函数名为is_valid_url 2. 参数为url字符串 3. 返回布尔值表示是否有效 4. 支持常见协议(http/https/ftp) 5. 包含完整的文档字符串模型生成的初始代码from urllib.parse import urlparse def is_valid_url(url: str) - bool: 验证URL格式是否有效 参数: url (str): 需要验证的URL字符串 返回: bool: 如果URL有效返回True否则返回False try: result urlparse(url) return all([result.scheme, result.netloc]) except ValueError: return False4.3 代码增强与测试我们可以进一步优化这个函数添加协议白名单只允许特定的协议验证顶级域名检查是否为有效的顶级域名处理特殊字符确保URL编码正确增强版实现def is_valid_url(url: str, allowed_schemes: List[str] None) - bool: 增强版URL验证函数支持协议白名单和基本域名验证 参数: url (str): 需要验证的URL allowed_schemes (List[str], optional): 允许的协议列表默认为[http,https,ftp] 返回: bool: 如果URL有效返回True否则返回False if allowed_schemes is None: allowed_schemes [http, https, ftp] try: result urlparse(url) if not all([result.scheme, result.netloc]): return False if result.scheme.lower() not in allowed_schemes: return False # 基本域名验证至少包含一个点 if . not in result.netloc: return False return True except ValueError: return False5. 完整示例与测试5.1 创建实用工具类将两个功能整合到一个工具类中class TextProcessingUtils: 文本处理工具类包含常用的文本处理功能 staticmethod def extract_emails(text: str) - List[str]: 提取电子邮件地址 pattern r\b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\b emails list(set(re.findall(pattern, text))) return [email.lower() for email in emails] staticmethod def is_valid_url(url: str, allowed_schemes: List[str] None) - bool: 验证URL有效性 if allowed_schemes is None: allowed_schemes [http, https, ftp] try: result urlparse(url) if not all([result.scheme, result.netloc]): return False if result.scheme.lower() not in allowed_schemes: return False if . not in result.netloc: return False return True except ValueError: return False5.2 测试用例编写测试用例验证功能# 测试电子邮件提取 test_text 请联系supportcompany.com或salesexample.org获取帮助。 无效邮箱user.com, domain.com, userdomain emails TextProcessingUtils.extract_emails(test_text) print(提取到的电子邮件:, emails) # 应输出: [supportcompany.com, salesexample.org] # 测试URL验证 urls_to_test [ https://www.example.com, http://localhost, ftp://files.example.org, javascript:alert(1), www.example.com ] print(\nURL验证结果:) for url in urls_to_test: print(f{url}: {TextProcessingUtils.is_valid_url(url)})6. 多语言实现Yi-Coder-1.5B支持多种编程语言我们可以轻松获取其他语言的实现。6.1 JavaScript版本生成JavaScript实现的提示请用JavaScript实现相同的功能 1. extractEmails函数提取电子邮件 2. isValidUrl函数验证URL 3. 包含JSDoc注释生成的JavaScript代码/** * 从文本中提取所有电子邮件地址 * param {string} text - 输入文本 * returns {string[]} 电子邮件地址数组 */ function extractEmails(text) { const pattern /\b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Za-z]{2,}\b/g; const emails [...new Set(text.match(pattern) || [])]; return emails.map(email email.toLowerCase()); } /** * 验证URL是否有效 * param {string} url - 要验证的URL * param {string[]} [allowedSchemes[http,https,ftp]] - 允许的协议 * returns {boolean} 是否有效 */ function isValidUrl(url, allowedSchemes [http, https, ftp]) { try { const urlObj new URL(url); if (!urlObj.hostname.includes(.)) return false; return allowedSchemes.includes(urlObj.protocol.slice(0, -1)); } catch (e) { return false; } }6.2 Java版本生成Java实现的提示请用Java实现相同的功能 1. EmailExtractor类包含提取方法 2. UrlValidator类包含验证方法 3. 使用Java标准库生成的Java代码import java.util.*; import java.util.regex.*; import java.net.URI; public class TextProcessor { // 提取电子邮件 public static ListString extractEmails(String text) { Pattern pattern Pattern.compile(\\b[A-Za-z0-9._%-][A-Za-z0-9.-]\\.[A-Za-z]{2,}\\b); Matcher matcher pattern.matcher(text); SetString emails new HashSet(); while (matcher.find()) { emails.add(matcher.group().toLowerCase()); } return new ArrayList(emails); } // 验证URL public static boolean isValidUrl(String url, ListString allowedSchemes) { if (allowedSchemes null) { allowedSchemes Arrays.asList(http, https, ftp); } try { URI uri new URI(url); if (uri.getHost() null || !uri.getHost().contains(.)) { return false; } String scheme uri.getScheme(); return scheme ! null allowedSchemes.contains(scheme.toLowerCase()); } catch (Exception e) { return false; } } }7. 总结与最佳实践7.1 使用Yi-Coder-1.5B的经验总结通过本次实践我们发现Yi-Coder-1.5B在代码生成方面有几个显著优势快速原型开发能在几分钟内生成可用的代码框架多语言支持轻松获取不同编程语言的实现代码质量高生成的代码通常包含文档字符串和类型注解可定制性强通过调整提示词可以获得不同风格的实现7.2 提高代码生成质量的技巧明确具体需求在提示中详细说明功能要求指定编程语言明确指出需要哪种语言的实现包含示例提供输入输出示例有助于生成更准确的代码分步生成对于复杂功能可以先生成框架再填充细节7.3 后续改进方向虽然生成的代码质量已经很高但我们还可以添加更全面的单元测试实现性能优化版本扩展支持更多的电子邮件格式和URL协议集成到自动化工作流中Yi-Coder-1.5B作为一个轻量级的代码生成模型为开发者提供了强大的辅助工具特别适合快速实现常见功能和减少重复编码工作。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
Ollama+Yi-Coder-1.5B实战:快速生成电子邮件提取与URL验证代码
OllamaYi-Coder-1.5B实战快速生成电子邮件提取与URL验证代码1. 项目背景与需求在日常开发工作中我们经常需要处理文本数据其中最常见的需求之一就是从文本中提取电子邮件地址以及验证URL的有效性。这些功能看似简单但要编写健壮、高效的实现却需要花费不少时间。传统做法是手动编写正则表达式处理各种边界情况反复测试和调试使用Yi-Coder-1.5B代码生成模型我们可以快速获得高质量的代码实现大大提升开发效率。本文将展示如何利用这个强大的工具在几分钟内完成这两个常见功能的开发。2. 环境准备与模型部署2.1 安装Ollama框架首先需要安装Ollama框架这是一个优秀的本地大模型部署工具。根据你的操作系统选择对应的安装方式Windows系统访问Ollama官网下载安装程序双击运行安装向导完成安装后打开命令提示符验证是否安装成功macOS/Linux系统curl -fsSL https://ollama.com/install.sh | sh2.2 下载Yi-Coder-1.5B模型安装完成后通过以下命令下载并启动Yi-Coder-1.5B模型ollama run yi-coder:1.5b首次运行会自动下载模型文件约3GB下载完成后会自动进入交互模式。3. 电子邮件提取功能实现3.1 功能需求分析我们需要实现一个Python函数能够从任意文本中提取所有电子邮件地址支持常见的电子邮件格式排除无效或格式错误的地址返回格式统一的列表3.2 生成提取函数代码在Ollama交互界面中输入以下提示请生成一个Python函数从输入文本中提取所有有效的电子邮件地址。要求 1. 函数名为extract_emails 2. 参数为text字符串 3. 返回找到的所有电子邮件地址列表 4. 包含完整的文档字符串和类型注解模型生成的完整代码import re from typing import List def extract_emails(text: str) - List[str]: 从输入文本中提取所有有效的电子邮件地址 参数: text (str): 需要提取的文本内容 返回: List[str]: 包含所有有效电子邮件地址的列表 示例: extract_emails(联系我testexample.com或adminsite.org) [testexample.com, adminsite.org] # 电子邮件正则表达式模式 pattern r\b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\b emails re.findall(pattern, text) return emails3.3 代码解析与优化生成的代码已经相当完善但我们还可以做一些改进添加重复检查确保返回的列表中没有重复的电子邮件忽略大小写统一转换为小写格式验证域名检查域名部分是否有效优化后的版本def extract_emails(text: str) - List[str]: 改进版电子邮件提取函数增加去重和格式统一 参数: text (str): 需要提取的文本内容 返回: List[str]: 包含所有唯一有效电子邮件地址的列表 pattern r\b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\b emails list(set(re.findall(pattern, text))) # 使用set去重 return [email.lower() for email in emails] # 统一为小写4. URL验证功能实现4.1 功能需求分析URL验证功能需要检查字符串是否符合URL格式支持http、https、ftp等常见协议验证域名有效性处理特殊字符和编码4.2 生成验证函数代码向模型输入以下提示请生成一个Python函数来验证URL格式是否有效。要求 1. 函数名为is_valid_url 2. 参数为url字符串 3. 返回布尔值表示是否有效 4. 支持常见协议(http/https/ftp) 5. 包含完整的文档字符串模型生成的初始代码from urllib.parse import urlparse def is_valid_url(url: str) - bool: 验证URL格式是否有效 参数: url (str): 需要验证的URL字符串 返回: bool: 如果URL有效返回True否则返回False try: result urlparse(url) return all([result.scheme, result.netloc]) except ValueError: return False4.3 代码增强与测试我们可以进一步优化这个函数添加协议白名单只允许特定的协议验证顶级域名检查是否为有效的顶级域名处理特殊字符确保URL编码正确增强版实现def is_valid_url(url: str, allowed_schemes: List[str] None) - bool: 增强版URL验证函数支持协议白名单和基本域名验证 参数: url (str): 需要验证的URL allowed_schemes (List[str], optional): 允许的协议列表默认为[http,https,ftp] 返回: bool: 如果URL有效返回True否则返回False if allowed_schemes is None: allowed_schemes [http, https, ftp] try: result urlparse(url) if not all([result.scheme, result.netloc]): return False if result.scheme.lower() not in allowed_schemes: return False # 基本域名验证至少包含一个点 if . not in result.netloc: return False return True except ValueError: return False5. 完整示例与测试5.1 创建实用工具类将两个功能整合到一个工具类中class TextProcessingUtils: 文本处理工具类包含常用的文本处理功能 staticmethod def extract_emails(text: str) - List[str]: 提取电子邮件地址 pattern r\b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\b emails list(set(re.findall(pattern, text))) return [email.lower() for email in emails] staticmethod def is_valid_url(url: str, allowed_schemes: List[str] None) - bool: 验证URL有效性 if allowed_schemes is None: allowed_schemes [http, https, ftp] try: result urlparse(url) if not all([result.scheme, result.netloc]): return False if result.scheme.lower() not in allowed_schemes: return False if . not in result.netloc: return False return True except ValueError: return False5.2 测试用例编写测试用例验证功能# 测试电子邮件提取 test_text 请联系supportcompany.com或salesexample.org获取帮助。 无效邮箱user.com, domain.com, userdomain emails TextProcessingUtils.extract_emails(test_text) print(提取到的电子邮件:, emails) # 应输出: [supportcompany.com, salesexample.org] # 测试URL验证 urls_to_test [ https://www.example.com, http://localhost, ftp://files.example.org, javascript:alert(1), www.example.com ] print(\nURL验证结果:) for url in urls_to_test: print(f{url}: {TextProcessingUtils.is_valid_url(url)})6. 多语言实现Yi-Coder-1.5B支持多种编程语言我们可以轻松获取其他语言的实现。6.1 JavaScript版本生成JavaScript实现的提示请用JavaScript实现相同的功能 1. extractEmails函数提取电子邮件 2. isValidUrl函数验证URL 3. 包含JSDoc注释生成的JavaScript代码/** * 从文本中提取所有电子邮件地址 * param {string} text - 输入文本 * returns {string[]} 电子邮件地址数组 */ function extractEmails(text) { const pattern /\b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Za-z]{2,}\b/g; const emails [...new Set(text.match(pattern) || [])]; return emails.map(email email.toLowerCase()); } /** * 验证URL是否有效 * param {string} url - 要验证的URL * param {string[]} [allowedSchemes[http,https,ftp]] - 允许的协议 * returns {boolean} 是否有效 */ function isValidUrl(url, allowedSchemes [http, https, ftp]) { try { const urlObj new URL(url); if (!urlObj.hostname.includes(.)) return false; return allowedSchemes.includes(urlObj.protocol.slice(0, -1)); } catch (e) { return false; } }6.2 Java版本生成Java实现的提示请用Java实现相同的功能 1. EmailExtractor类包含提取方法 2. UrlValidator类包含验证方法 3. 使用Java标准库生成的Java代码import java.util.*; import java.util.regex.*; import java.net.URI; public class TextProcessor { // 提取电子邮件 public static ListString extractEmails(String text) { Pattern pattern Pattern.compile(\\b[A-Za-z0-9._%-][A-Za-z0-9.-]\\.[A-Za-z]{2,}\\b); Matcher matcher pattern.matcher(text); SetString emails new HashSet(); while (matcher.find()) { emails.add(matcher.group().toLowerCase()); } return new ArrayList(emails); } // 验证URL public static boolean isValidUrl(String url, ListString allowedSchemes) { if (allowedSchemes null) { allowedSchemes Arrays.asList(http, https, ftp); } try { URI uri new URI(url); if (uri.getHost() null || !uri.getHost().contains(.)) { return false; } String scheme uri.getScheme(); return scheme ! null allowedSchemes.contains(scheme.toLowerCase()); } catch (Exception e) { return false; } } }7. 总结与最佳实践7.1 使用Yi-Coder-1.5B的经验总结通过本次实践我们发现Yi-Coder-1.5B在代码生成方面有几个显著优势快速原型开发能在几分钟内生成可用的代码框架多语言支持轻松获取不同编程语言的实现代码质量高生成的代码通常包含文档字符串和类型注解可定制性强通过调整提示词可以获得不同风格的实现7.2 提高代码生成质量的技巧明确具体需求在提示中详细说明功能要求指定编程语言明确指出需要哪种语言的实现包含示例提供输入输出示例有助于生成更准确的代码分步生成对于复杂功能可以先生成框架再填充细节7.3 后续改进方向虽然生成的代码质量已经很高但我们还可以添加更全面的单元测试实现性能优化版本扩展支持更多的电子邮件格式和URL协议集成到自动化工作流中Yi-Coder-1.5B作为一个轻量级的代码生成模型为开发者提供了强大的辅助工具特别适合快速实现常见功能和减少重复编码工作。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。