5分钟彻底搞懂Ruby正则表达式,开发者必收藏

第一章:Ruby正则表达式的核心概念

正则表达式(Regular Expression)是 Ruby 中处理字符串匹配与提取的强大工具。它允许开发者通过特定的模式描述来搜索、替换或分割文本内容,广泛应用于数据验证、日志解析和文本处理等场景。

基本语法与字面量表示

在 Ruby 中,正则表达式可通过斜杠 /pattern/ 或 Regexp.new("pattern") 构造。例如:
# 匹配包含 "ruby" 的字符串(不区分大小写)
pattern = /ruby/i
text = "I love Ruby programming!"
if text.match?(pattern)
  puts "Found a match!"
end
上述代码中,/ruby/i 表示匹配字符序列 "ruby",修饰符 i 使匹配忽略大小写。

常用元字符与功能

以下是一些核心元字符及其作用:
  • .:匹配任意单个字符(除换行符)
  • ^ 和 $:分别匹配字符串的开始和结束
  • \d:匹配任意数字,等价于 [0-9]
  • *:匹配前面的子表达式零次或多次
  • +:匹配前面的子表达式一次或多次

捕获组与后向引用

使用括号可定义捕获组,便于提取子匹配内容或重复使用。例如:
# 提取姓名中的姓和名
name = "Alice Smith"
match = name.match(/(\w+)\s+(\w+)/)
puts "First name: #{match[1]}" # Alice
puts "Last name:  #{match[2]}" # Smith
模式示例说明
/\d{3}-\d{3}-\d{4}/123-456-7890匹配标准电话格式
/[aeiou]/hello匹配任一元音字母

第二章:Ruby正则表达式基础语法详解

2.1 正则表达式的定义与创建方式

正则表达式(Regular Expression)是一种用于匹配字符串的强大工具,广泛应用于文本搜索、替换和验证场景。它通过特定语法规则构建模式,用以识别符合预期的字符序列。
创建正则表达式的方式
在JavaScript中,可通过两种方式创建正则表达式:字面量形式和构造函数形式。

// 字面量形式
const regex1 = /hello/;

// 构造函数形式
const regex2 = new RegExp('hello');
上述代码中,`/hello/` 是字面量写法,语法简洁,适合静态模式;而 `new RegExp('hello')` 动态性更强,可用于拼接变量生成模式。
常用修饰符示例
  • i:忽略大小写
  • g:全局匹配
  • m:多行匹配
例如 `/hello/i` 能匹配 "Hello" 或 "HELLO",体现其灵活的匹配能力。

2.2 常用元字符与模式匹配规则

正则表达式通过元字符实现灵活的文本匹配。常见的元字符包括 .(匹配任意单个字符)、^ 和 $(分别匹配行首和行尾)、*(零次或多次)、+(一次或多次)以及 ?(零次或一次)。
常用元字符示例
  • \d:匹配任意数字,等价于 [0-9]
  • \w:匹配字母、数字或下划线
  • \s:匹配空白字符(空格、制表符等)
  • [abc]:匹配括号内的任意一个字符
  • a|b:匹配 a 或 b
模式匹配实例
^\d{3}-\d{3}-\d{4}$
该正则用于匹配格式为“123-456-7890”的电话号码:
- ^ 和 $ 确保完整匹配;
- \d{3} 匹配三位数字;
- - 匹配连字符;
- 整体结构确保输入符合标准电话格式。

2.3 字符类、量词与边界匹配实践

在正则表达式中,字符类用于定义一组可匹配的字符。例如,[a-z] 匹配任意小写字母,\d 等价于 [0-9],常用于匹配数字。
常用字符类与量词组合
  • \w+:匹配一个或多个字母、数字或下划线
  • \s*:匹配零个或多个空白字符
  • \d{3}:精确匹配三位数字
^\w+@\w+\.(com|net)$
该表达式用于验证邮箱是否以单词开头,包含@符号和域名,结尾为 com 或 net。^ 和 $ 分别确保从字符串开头到结尾完全匹配。
边界匹配的应用场景
使用 \b 可精确匹配单词边界。例如:
\bjava\b
仅匹配独立的 "java" 单词,而不匹配 "javascript" 中的子串。这种精确控制在日志分析中尤为关键。

2.4 分组捕获与反向引用技巧

在正则表达式中,分组捕获通过括号 () 实现,可用于提取子匹配内容或重复使用匹配结果。
基本分组语法
(\d{4})-(\d{2})-(\d{2})
该模式匹配日期格式如 2025-04-05,三个括号分别捕获年、月、日。捕获的内容可通过 $1、$2、$3 进行反向引用。
反向引用应用场景
  • 验证重复结构,如匹配成对的标签:
    <(\w+)>.*?</\1>
  • 重写URL时保留原始片段:/$1/profile 中的 $1 引用第一个捕获组
捕获组索引从1开始,非捕获组使用 (?:) 语法以提升性能。

2.5 贪婪与懒惰匹配的行为解析

正则表达式中的量词默认采用贪婪模式,即尽可能多地匹配字符。而通过在量词后添加 ? 可切换为懒惰模式,实现最小匹配。
贪婪与懒惰的对比示例

文本: <div>内容1</div><div>内容2</div>

贪婪匹配: <div>.*</div>
结果: 匹配整个字符串

懒惰匹配: <div>.*?</div>
结果: 分别匹配两个 div 标签
上述代码中,.* 会一直匹配到最后一个 </div>,而 .*? 在遇到第一个满足条件的结尾标签时即停止。
常见量词行为对照表
模式语法行为
贪婪*、+、{n,}尽可能多匹配
懒惰*?、+?、{n,}?尽可能少匹配

第三章:正则表达式在Ruby中的操作方法

3.1 match方法与MatchData对象处理

在正则表达式操作中,`match` 方法用于检测字符串是否符合指定模式,并返回一个包含匹配信息的 `MatchData` 对象。
match方法的基本用法
text = "Contact us at support@example.com"
match_result = text.match(/(\w+)@(\w+\.\w+)/)
该代码调用字符串的 `match` 方法,传入邮箱正则。若匹配成功,返回 `MatchData` 实例;否则返回 `nil`。
MatchData对象的数据提取
  • match_result[0]:获取完整匹配结果(如 support@example.com)
  • match_result[1]:捕获第一个分组内容(用户名部分)
  • match_result[2]:第二个分组(域名部分)
  • match_result.names:获取命名捕获组的名称列表
通过索引或名称访问,可结构化提取文本中的关键信息,适用于日志解析、数据清洗等场景。

3.2 gsub、sub替换功能的高级用法

在文本处理中,`gsub` 和 `sub` 是强大的字符串替换函数,广泛应用于日志清洗、数据标准化等场景。`sub` 仅替换首次匹配,而 `gsub` 替换所有匹配项。
使用正则表达式进行动态替换
gsub(/error_[0-9]+/, "ERROR_CODE", $0)
该语句将所有形如 error_123 的字段替换为统一标识 ERROR_CODE。正则模式 /error_[0-9]+/ 匹配以 error_ 开头后跟数字的字符串,实现批量规范化。
结合捕获组的复杂替换
gsub(/(timestamp=)([^ ]+)/, "\\1CURRENT_TIME", $0)
利用括号定义捕获组,第一个 (timestamp=) 被保留引用(通过 \\1),第二个组用于定位值域,整体替换为固定时间戳,确保关键字段不变性。
  • sub(r, s):仅替换第一次匹配
  • gsub(r, s):全局替换所有匹配
  • 支持正则表达式作为匹配模式

3.3 split与scan在文本解析中的应用

在处理字符串数据时,split 和 scan 是两种核心的文本解析方法,分别适用于结构化和模式化文本的提取。
split:基于分隔符的简单拆分
split 方法通过指定分隔符将字符串拆分为数组,适合处理 CSV 或日志等格式规整的数据。
text := "apple,banana,orange"
parts := strings.Split(text, ",")
// 输出: ["apple" "banana" "orange"]
该方法逻辑清晰,但无法处理复杂模式或正则匹配场景。
scan:基于正则的模式提取
scan 利用正则表达式匹配并提取特定模式,适用于非结构化文本。
re := regexp.MustCompile(`(\d{4})-(\d{2})-(\d{2})`)
matches := re.FindAllStringSubmatch("2023-01-01; 2023-02-01", -1)
// 每个 match[1], match[2], match[3] 分别对应年、月、日
此方式灵活强大,可精准捕获嵌套信息。
  • split 适用于固定分隔符的快速分割
  • scan 更适合复杂模式的多字段提取

第四章:常见应用场景与实战案例

4.1 验证邮箱、手机号等用户输入格式

在用户注册或信息提交场景中,验证输入格式是保障数据规范性的第一道防线。前端与后端需协同完成校验,避免非法数据进入系统。
常见正则表达式规则
  • 邮箱验证:需匹配本地部分、@符号和域名
  • 中国大陆手机号:以1开头,第二位为3-9,共11位数字
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
const phoneRegex = /^1[3-9]\d{9}$/;

function validateEmail(email) {
  return emailRegex.test(email);
}

function validatePhone(phone) {
  return phoneRegex.test(phone);
}
上述代码定义了两个正则表达式:`emailRegex` 精确匹配标准邮箱格式,包含合法字符集与域名结构;`phoneRegex` 限定中国大陆手机号规则。`test()` 方法返回布尔值,用于快速判断输入合法性,适用于表单实时校验场景。

4.2 提取网页日志中的关键信息字段

在分析网页日志时,提取关键字段是实现用户行为追踪与异常检测的基础。常见的关键字段包括IP地址、访问时间、请求路径、HTTP状态码和用户代理。
常用日志格式解析
以Nginx的默认日志格式为例:
192.168.1.10 - - [10/Apr/2025:12:34:56 +0000] "GET /api/user HTTP/1.1" 200 1024 "https://example.com" "Mozilla/5.0"
该条目中可提取出:IP(192.168.1.10)、时间([10/Apr/2025:12:34:56 +0000])、请求方法与路径(GET /api/user)、状态码(200)及User-Agent。
使用正则表达式提取字段
import re
log_pattern = r'(\d+\.\d+\.\d+\.\d+) - - \[(.*?)\] "(.*?)" (\d{3})'
match = re.match(log_pattern, log_line)
if match:
    ip, time, request, status = match.groups()
上述正则将日志分解为结构化数据,便于后续存储与分析。其中,(\d+\.\d+\.\d+\.\d+) 匹配IPv4地址,(\d{3}) 提取三位状态码。

4.3 清洗和重构不规范文本数据

在处理真实场景中的文本数据时,常面临大小写混杂、多余空格、特殊字符干扰等问题。有效的清洗流程是构建高质量NLP pipeline的基石。
常见清洗步骤
  • 去除首尾空白和重复空格
  • 统一文本大小写
  • 移除或转义HTML标签与特殊符号
  • 处理缺失值与异常编码
代码示例:Python文本清洗函数
import re

def clean_text(text):
    text = text.strip()                   # 去除首尾空白
    text = re.sub(r'\s+', ' ', text)      # 合并多个空格
    text = re.sub(r'[^\w\s]', '', text)   # 移除非字母数字字符
    return text.lower()                   # 转为小写

# 示例输入
raw_text = "  Hello!!!  World    "
print(clean_text(raw_text))  # 输出: hello world
该函数通过正则表达式和字符串方法,系统性地消除噪声,输出标准化文本,便于后续分词、向量化等操作。

4.4 构建DSL中基于模式的解析逻辑

在构建领域特定语言(DSL)时,基于模式的解析逻辑是实现语义准确识别的核心。通过预定义语法模式,解析器可高效匹配输入文本并转化为抽象语法树(AST)。
模式匹配机制
采用正则表达式与上下文无关文法结合的方式,定义关键词、操作符及结构化语句的匹配规则。例如,匹配赋值语句的模式如下:
// 定义赋值语句的正则模式
var assignmentPattern = regexp.MustCompile(`^(\w+)\s*=\s*(.+)$`)

// 解析输入行
if matches := assignmentPattern.FindStringSubmatch(line); matches != nil {
    variable := matches[1]  // 变量名
    expression := matches[2] // 表达式内容
}
上述代码中,正则捕获组分别提取变量名和右侧表达式,为后续语义分析提供结构化数据。
解析流程控制
  • 词法分析:将原始输入切分为 token 流
  • 语法匹配:依据模式库逐层匹配复合结构
  • 节点生成:构造 AST 节点并维护父子关系

第五章:性能优化与最佳实践总结

数据库查询优化策略
频繁的慢查询是系统瓶颈的主要来源之一。使用索引覆盖和复合索引可显著提升查询效率。例如,在用户订单表中建立 `(user_id, created_at)` 复合索引,能加速按用户和时间范围的检索。

-- 创建复合索引以优化常见查询路径
CREATE INDEX idx_user_orders ON orders (user_id, created_at DESC);
-- 避免 SELECT *,仅获取必要字段
SELECT order_id, status, total FROM orders WHERE user_id = 123 AND created_at > '2023-01-01';
缓存层级设计
采用多级缓存架构可有效降低数据库压力。本地缓存(如 Caffeine)用于高频访问的静态数据,Redis 作为分布式缓存存储会话或共享状态。
  • 设置合理的 TTL,避免缓存雪崩
  • 使用布隆过滤器预判缓存穿透风险
  • 对热点 Key 实施分片或本地副本机制
并发处理与资源控制
在高并发场景下,线程池配置不当易引发 OOM 或响应延迟。应根据业务类型划分独立线程池,避免资源共享冲突。
线程池类型核心线程数队列容量适用场景
IO密集型2 * CPU + 101000文件上传、远程调用
计算密集型CPU 核心数100数据解析、加密运算
监控与调优闭环
通过 Prometheus + Grafana 搭建实时监控体系,采集 JVM、GC、QPS 和 P99 延迟指标。当 P99 超过 500ms 时触发告警,并结合链路追踪定位瓶颈服务。
【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述 种工具:导弹设计工具(Missile Design Tool,MDT )、导弹飞行工具(Missile Flight Tool,截弹,或者用内置拦截弹编辑器创建的个性化的拦截弹, IFT 能够对 ―一对一 ‖动能拦截。导设置系统参数, 并对其有效性进行验证, 画性能图,保证该设计是可行的。(SAIC)公司联合开发研制,极大扩展了 STK 原有的导弹对象的功能,能够精确仿真。IFT 能够对拦截飞机、 导弹、卫星等目标进行仿真和分析。(2)推进系统参数,包括推力,比冲,秒流量,推力持续时间,喷嘴出口面积, 阅读详情

相关推荐

USB-Type-C PCB布局布线设计规范

USB Type-C连接器有24个引脚。图1和图2分别显示了USB Type-C插座和插头的插针。母头/母座公头/插头可以很明显看出,插口内的Pin功能相对于中心对称。公头插入母头,无论正反插,引脚功能都完美契合。而且电源VBUS/GND都拥有4个Pin,最大支持5A电流,在保证高速数据传输的同时也提高了电流承载能力。表 1 和表 2 分别汇总了在 USB Type-C 型插座和插头上所使用的信号列表。

weixin_63005522的博客 8279

oh-my-posh Ruby:Ruby版本管理显示的终极解决方案

你是否曾经在多个Ruby项目间切换时,因为版本不匹配而陷入依赖地狱?是否在运行`bundle install`时才发现当前Ruby版本与Gemfile要求不符?oh-my-posh的Ruby版本管理显示功能,让你在终端提示符中实时掌握Ruby环境状态,彻底告别版本混乱的烦恼。 ## 痛点场景:Ruby开发者的版本管理困境 Ruby开发者经常面临这样的挑战: ```bash # 场景1:版本不...

gitblog_00591的博客 852

2025年普通人转向人工智能运维(AIOps)学习建议(附最新技术实践与资源)

AIOps不仅是技术的叠加,更是运维流程的重构。建议通过“学习-实践-反馈”循环,逐步从工具使用者成长为解决方案设计者。如需完整资源链接,可访问上述推荐的优快云博客及GitHub仓库。

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 3096

终极指南:5分钟快速上手Onigmo正则表达式库

Onigmo是一个功能强大的开源正则表达式库,从Oniguruma项目分支而来。作为Ruby 2.0及以后版本的默认正则表达式引擎,Onigmo提供了丰富的正则表达式功能,支持Perl 5.10+的新表达式特性。本文将为您提供完整的Onigmo安装与使用教程,让您快速掌握这个强大的工具。😊 ## 🚀 一键安装步骤 ### Linux/Unix系统快速安装 对于Unix和Cygwin平台,

gitblog_00017的博客 1018

智能车竞赛新手必看:单车定向组直线竞速与八字慢速实战技巧

本文为智能车竞赛新手提供单车定向组直线竞速与八字慢速的实战技巧,涵盖赛道分析、动力调校、传感器配置等关键环节。通过真实案例和代码示例,详细讲解如何平衡速度与稳定性,帮助选手避免常见失误,提升比赛成绩。特别针对智能车竞赛中的直线竞速和八字慢速项目,提供从硬件选型到临场策略的全方位指导。

weixin_28718793的博客 434

Windows报错“The system cannot find the file specified“的PATH环境变量解决方案

摘要: Windows系统中出现"The system cannot find the file specified"错误通常因PATH环境变量配置问题导致。本文提供解决方案:1)检查并修正PATH变量(通过命令行或图形界面添加缺失路径);2)确认程序安装路径及拼写无误;3)恢复误改的系统变量。示例演示了Python路径配置及无效路径清理方法,建议谨慎修改变量、使用绝对路径并定期检查。附参考表格详述操作步骤,帮助用户高效解决问题并优化系统环境。

shejizuopin的博客 3517

正则表达式要跑 5 天,所以我做了个工具,只跑 15 分钟。_正则表达式15分钟执行一次

FlashText 是我在。

2401_84563561的博客 920

ComfyUI-Impact-Subpack插件安装避坑指南:为什么你的UltralyticsDetectorProvider节点还是找不到?

本文深入解析了ComfyUI-Impact-Subpack插件的安装与排障问题,特别是针对UltralyticsDetectorProvider节点缺失的常见问题提供了详细的解决方案。从底层机制到高阶应用,涵盖了手动安装、模型配置、性能优化等关键步骤,帮助用户彻底解决插件依赖关系断裂问题。

Jerry的专栏 1152

Ruby 札记 - 常谈正则表达式

前言 Ruby 对正则表达式支持比较好,简单整理一下。开门推荐三链接。 Rubular:在线 Ruby 正则表达式精品编辑器,支持多版本 Ruby Ruby Doc Ruby (英文)文档 30 分钟入门正则表达式: 还不错的正则整理文档 CheatSheet 语法 Ruby 中正则组成比较简单,模式如下,表达式返回 RegExp 对象。 /pattern/optional_modifier 复...

weixin_34292287的博客 173

【BLE系列-第六篇】GATT解析:属性、特征、描述符的逻辑关系

本文系统介绍了BLE协议中的ATT和GATT机制。ATT以"属性"为基本数据单元,包含UUID、Handle、权限和Value四个要素。GATT则在ATT基础上构建了服务、特征和描述符的层次结构:服务(UUID:0x2800/0x2801)通过声明属性标识,特征声明(UUID:0x2803)指向特征值(UUID:0x2Axx或自定义),描述符(UUID:0x2900~0x290F)提供附加信息。GATT复用ATT发现机制,通过定义特定UUID语义实现服务发现和特征管理。这种设计使BLE设

qq_43399763的博客 1929

《通信工程施工与管理》

制作馈线接头必须使用专用的工具,专用工具包括:馈线切割刀、馈线安全刀、小金属丝毛刷、固定尺寸或大号活动扳手、小号扁锉刀、细齿小手锯、接头扩孔器、3M防水胶或防水接头盒;如图所示,详情如表所示。

2302_78710464的博客 1653

Regexper入门指南:5分钟学会使用正则表达式可视化工具

正则表达式可视化工具Regexper是学习正则表达式的终极利器!无论你是编程新手还是资深开发者,这个简单易用的工具都能帮你快速理解复杂的正则表达式模式。在前100字内,我要强调Regexper的核心功能:它是一个基于铁路图的可视化工具,能将抽象的正则表达式转换为直观的图形展示,让正则表达式学习变得轻松有趣。 ## 📊 为什么需要正则表达式可视化工具? 正则表达式是文本处理的强大工具,但它的语

gitblog_00926的博客 207

华为OD机考2025C卷 - 高矮个子排队(Java & Python& JS & C++ & C)

华为OD机考2025C卷 - 高矮个子排队。提供在线OJ刷题。Java、C++、Python、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1682

ffmpeg-python 字幕同步实操:3步不用逐帧拖,把错位字幕拉回正轨

昨晚看一部英文片,字幕比台词晚了整整两秒多:角色已经讲完一句,上一句的字幕才慢悠悠浮出来。手动逐条拖时间轴又累又容易拖出新的错位,尤其这种全局性偏移。其实这事几分钟就能搞定——用 ffmpeg-python 做字幕同步的路径很直白:从视频里提取音频,用 silencedetect 滤镜检测语音段,和 SRT 时间戳算出偏移量,再整体修正时间轴写回去。 ## 🔊 先跑通——最小可用版本 安装就

gitblog_00005的博客 393

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

感受Ruby---序言

        最近一直在看Ruby,主要是在逛书店的时候无意中看到了Ruby On Rails这本书。对于Ruby我是向来有耳闻,当然也只是仅限于耳闻而已,而没有使用过,知道其大概后来在游戏的脚本之类的使用比较的广泛。这几天看Ruby算是真正的拿起来来研读了。        对于Ruby 我有以下说法:当我看到Ruby,1分钟后我就喜欢上了它,10分钟后就爱上了它,半个小时候我就告诉我自己,

huangxiaoke2000的专栏 975

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

关于正则表达式

缘起       由于一些情况,在分析Randoop的源代码,看到一些关于正则表达式的代码,想着自己接触正则表达式也有一段时间了,从自己接触《编译原理》到将操作系统换为Ubuntu,体会到正则表达式的强大的力量。所以想写一些简单的介绍正则表达式的文章。 正文   正则表达式(这里提供的百度百科的链接,也可以参考Wikipedia的解释对正则表达式的解释)是个处理文本字符串的极其强大工具

xiajian2010的专栏 1198

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

正则表达式要跑 5 天,所以我做了个工具,只跑 15 分钟。

原文地址:Regex was taking 5 days to run. So I built a tool that did it in 15 minutes. 原文作者:Vikash Singh 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:cf020031308 校对者:StellaBauhinia, Park ...

python学习者的博客 679

Python实战:5分钟用NumPy搞定SVD分解(附完整代码与避坑指南)

本文提供了一份Python实战指南,教你如何在5分钟内使用NumPy的`svd()`函数完成奇异值分解(SVD)。文章不仅提供了完整的代码示例,还通过图像压缩和推荐系统模拟等案例,深入解析了SVD在数据降维与压缩中的核心应用。同时,文中附带了处理数据类型、数值精度、大型矩阵及符号不确定性等常见问题的避坑指南,帮助开发者高效、可靠地应用这一强大的矩阵分解工具。

www00的博客 453

Lefthook终极指南:5分钟快速配置你的第一个Git钩子

Lefthook是一个**快速强大**的Git钩子管理器,专为Node.js、Ruby、Python等多种项目类型设计。无论你是前端开发者还是后端工程师,这个工具都能帮助你在5分钟内完成Git钩子的配置,实现代码质量自动化检查!🚀 ## 为什么选择Lefthook? **Git钩子管理**是现代软件开发中不可或缺的一环。Lefthook凭借其**极速性能**和**简单易用**的特点,成为众多

gitblog_00344的博客 359

Wayback Machine Downloader终极指南:5分钟学会网站存档备份

📅 互联网历史存档从未如此简单!Wayback Machine Downloader是一款强大的Ruby工具,能够让你从Internet Archive的Wayback Machine中下载完整的网站存档。无论你是想要保存重要的网站内容,还是需要备份即将关闭的网站,这个工具都能帮到你。🚀 ## 🔍 什么是Wayback Machine Downloader? Wayback Machin

gitblog_01029的博客 863

Ruby基础知识-常用对象

不同于C#中的DateTime,在ruby中日期和时间分别对应了Date和Time两个类。 1.1 日期 require "date" date = Date.new(2013,5,28) date = date-1 #昨天 date = date >> 1 #下月 puts date.leap? #闰年判断 puts date.to_s puts "%s...

weixin_30653097的博客 88

正则表达式查找字符串_如何简单理解正则表达式?只需1分钟就可以看到她优美的舞姿...

Hi,大家好,本章节开始将会从零开始和大家用图文的方式,让你从零基础学会正则表达式!有兴趣的小伙伴可以持续关注我,或者在专栏中进行查看自我学习,愿与君携手前行!本文将要说到的正则表达式?可能初学的你,一脸疑问?究竟何为正则,正则表达式,(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学语言的一个概念。正则表达式通常被用来检索、替换那...

weixin_28987001的博客 376

程序员必备的一些网站(收藏)

今天我给大家分享一下我平时自学前端的一些网站,这是网站也都是平日里我慢慢积累出来的,可能有的网站大家也都耳熟能详。不知道的小伙伴们可以根据自己的情况收藏一下,知道的大佬们就相当于重温一下吧!我是一个正在学习前端的小白。如果你是大佬,欢迎指正,如果你也正在学习前端,欢迎互相监督学习,共同进步! 01,程序员导航 程序员必备网站,里面给你归纳了众多的学习工具,社区论坛,学习网站等,可谓内容丰富。同时还有摸鱼专区。在这里你甚至可以脱单。是不是很nice呢? 里面有很多的东西等着我们去发现,我主要是逛逛.

笨笨的博客 1万+

c#使用正则表达式获取TR中的多个TD_如何简单理解正则表达式?只需1分钟就可以看到她优美的舞姿...

Hi,大家好,本章节开始将会从零开始和大家用图文的方式,让你从零基础学会正则表达式!有兴趣的小伙伴可以持续关注我,或者在专栏中进行查看自我学习,愿与君携手前行!本文将要说到的正则表达式?可能初学的你,一脸疑问?究竟何为正则,正则表达式,(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学语言的一个概念。正则表达式通常被用来检索、替换那...

weixin_39622643的博客 331

ruby笔记

1、判断是否是目录,判断该目录是否存在 [code="ruby"]File.directory?(argu)[/code] 2、遍历目录 [code="ruby"]Dir.foreach(argu) do |f| end[/code] 结果中包含"." ".." 3、改变工作目录 [code="ruby"]Dir.chdir(argu)[/code] 4、字符串移除前后...

samwalt的博客 153

5分钟掌握Semgrep:开发者必备的代码安全扫描终极指南 [特殊字符]

Semgrep是一款强大、快速的开源静态代码分析工具,专为开发者设计,能够扫描代码、发现漏洞并强制执行安全护栏和编码标准。这款工具支持30多种编程语言,可以在IDE中运行,作为预提交检查,也可以集成到CI/CD工作流中。Semgrep的核心功能是代码安全扫描和静态分析,让开发者能够快速识别潜在的安全风险和代码质量问题。 ## 为什么选择Semgrep进行代码安全扫描? 🔍 Semgrep的独

gitblog_01083的博客 619
上一篇: 【Ruby Proc进阶指南】:掌握Proc的5种高阶用法,提升代码复用效率
下一篇: 【R数据科学基石】:为什么你的矩阵操作总是出错?
SimCompile
博客等级 码龄1年 140粉丝 2012原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值