当前位置: 首页 > news >正文

正则表达式 \b:单词边界

下面举例说明 \b 用法。

\b(?:https?://)(\S+)\b
各部分功能
  • \b:单词边界,确保匹配的 URL 是独立的单词,不会与其他字符粘连。
  • (?:https?://):非捕获组,匹配 http:// 或 https://s? 表示 s 可选)。
  • (\S+):捕获组,匹配任意非空白字符(\S)至少一次(+),用于提取域名和路径。
  • \b:另一个单词边界,确保 URL 结束。

2. 匹配示例

该正则表达式可以匹配以下类型的 URL:

  • http://example.com
  • https://www.example.com/path?query=1
  • https://user:pass@example.com

但无法匹配:

  • 没有协议头的 URL(如 example.com
  • 带有空格的 URL(如 http://ex ample.com

3. 用途

  • URL 提取:从文本中识别并提取所有超链接。
  • 输入验证:检查用户输入是否为合法的 URL(需结合其他验证逻辑)。
  • 数据清洗:在处理文本数据时过滤出 URL 部分。

4. 注意事项

局限性
  • 宽松匹配:会匹配一些看似像 URL 但实际无效的字符串(如 http://...)。
  • 不支持特殊协议:无法匹配 ftp://mailto: 等非 HTTP (S) 协议。
  • 路径限制:可能错误匹配包含非法字符的路径(如未编码的空格)。
改进建议

如果需要更精确的 URL 匹配,可以使用更严格的正则表达式,例如:

\b(?:https?://)(?:www\.)?[a-zA-Z0-9-]+(?:\.[a-zA-Z]{2,})+(?:/[^\s]*)?\b

这个改进版本增加了对域名结构的验证(如 .com 后缀),减少误匹配。

5. 代码示例(C#)

以下是使用该正则表达式提取 URL 的 C# 代码:

using System;
using System.Text.RegularExpressions;string text = "访问网站:https://example.com 和 http://test.com";
string pattern = @"\b(?:https?://)(\S+)\b";foreach (Match match in Regex.Matches(text, pattern))
{Console.WriteLine("完整匹配: " + match.Value);Console.WriteLine("URL 部分: " + match.Groups[1].Value);Console.WriteLine();
}

输出结果:

完整匹配: https://example.com
URL 部分: example.com完整匹配: http://test.com
URL 部分: test.com

总结

你提供的正则表达式适用于快速提取以 http:// 或 https:// 开头的 URL,但在严格的验证场景中可能需要进一步优化。根据具体需求,可以调整模式以适应不同格式的 URL。

http://www.dtcms.com/a/298635.html

相关文章:

  • 模拟flink处理无限数据流
  • WAIC2025预告|英码深元AI一体机将亮相华为昇腾展区,以灵活部署的能力赋能行业智能化转型
  • 学习:JS[6]环境对象+回调函数+事件流+事件委托+其他事件+元素尺寸位置
  • ReVQ (Quantize-then-Rectify,量化后修正)
  • 笛卡尔积规避:JOIN条件完整性检查要点
  • FreeRTOS—互斥信号量
  • Sweet Home 3D:一款免费的室内装修辅助设计软件
  • 【集合】JDK1.8 HashMap 底层数据结构深度解析
  • 第二章: 解密“潜在空间”:AI是如何“看见”并“记住”世界的?
  • 深入解析C语言三路快速排序算法
  • 动态规划:从入门到精通
  • 多品种小批量如何实现柔性排产?
  • 无感交互,创意飞扬:AI摄像头动捕赋能中小学AI人工智能实训室
  • Python Requests-HTML库详解:从入门到实战
  • 环境变量-进程概念(7)
  • 对自定义域和 GitHub 页面进行故障排除(Windows)
  • 批改作业小工具(一)-read report
  • InfluxDB Line Protocol 协议深度剖析(一)
  • 07 51单片机之定时器
  • 10BASE-T1S核心机制——PLCA参数详解
  • 关于AI编程的分析报告
  • 【通识】算法案例
  • 【电赛学习笔记】MaxiCAM 项目实践——与单片机的串口通信
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(10):ような复习
  • [科普] 快速傅里叶变换(FFT)和离散傅里叶变换(DFT)的差异
  • WordPress WPBookit插件任意文件上传漏洞(CVE-2025-6058)
  • 魔百和M401H_国科GK6323V100C_安卓9_不分地区免拆卡刷固件包
  • 一键搭建博客脚本LNMP(非编译)Wordpress
  • 【论文解读】MambaVision: A Hybrid Mamba-Transformer Vision Backbone
  • 深度学习入门(1)