Ruby 正则表达式

Ruby 正则表达式

引言

正则表达式(Regular Expression,简称Regex)是一种强大的文本处理工具,在编程和数据处理中有着广泛的应用。Ruby 作为一种动态、灵活的编程语言,同样内置了强大的正则表达式功能。本文将详细介绍 Ruby 中的正则表达式,包括其语法、匹配模式、以及在实际开发中的应用。

Ruby 正则表达式基础

1. 正则表达式语法

Ruby 中的正则表达式使用反斜杠(\)作为转义字符,以下是常用的一些元字符:

  • \d:匹配一个数字字符(0-9)。
  • \w:匹配一个字母数字或下划线字符(等同于 [a-zA-Z0-9_])。
  • \s:匹配任何空白字符(空格、制表符、换行符等)。
  • .:匹配除换行符以外的任意字符。
  • []:匹配括号内的任意一个字符。
  • [^]:匹配不在括号内的任意一个字符。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • ?:匹配前面的子表达式零次或一次。
  • {n}:匹配前面的子表达式恰好 n 次。
  • {n,}:匹配前面的子表达式至少 n 次。
  • {n,m}:匹配前面的子表达式至少 n 次,但不超过 m 次。

2. 正则表达式匹配模式

Ruby 中的正则表达式支持多种匹配模式,包括:

  • match:匹配整个字符串,返回匹配的结果。
  • match?:匹配整个字符串,返回布尔值。
  • scan:匹配整个字符串,返回所有匹配的结果。
  • split:按照正则表达式分割字符串,返回分割后的数组。
  • gsub:将匹配的文本替换为指定的内容。

Ruby 正则表达式应用

1. 字符串匹配

str = "Hello, world!"
match_data = str.match(/\w+/)
puts match_data.to_s # 输出: Hellomatch_data = str.match?(/\w+/)
puts match_data # 输出: truematch_data = str.scan(/\w+/)
puts match_data.to_s # 输出: ["Hello", "world"]str = "The quick brown fox jumps over the lazy dog"
split_data = str.split(/\s+/)
puts split_data.to_s # 输出: ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"]

2. 字符串替换

str = "The quick brown fox jumps over the lazy dog"
puts str.gsub(/\w+/) { |word| word.upcase } # 输出: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

3. 验证输入

email = "example@example.com"
if email.match(/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/)puts "Valid email"
elseputs "Invalid email"
end

总结

Ruby 正则表达式是 Ruby 语言中强大的文本处理工具,可以方便地进行字符串匹配、替换、分割等操作。掌握正则表达式对于 Ruby 开发者来说至关重要。本文介绍了 Ruby 正则表达式的基础语法、匹配模式和实际应用,希望能对读者有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes》》k8s》》删除命名空间

使用 kubectl delete ns 命名空间 --force --grace-period0 如果还删除不掉 需要 kubectl get namespace 命名空间 -o json > x.json vim x.json kubectl replace --raw “/api/v1/namespaces/命名空间/finalize” -f ./x.json

玩转Docker | 使用Docker部署DashMachine个人书签工具

玩转Docker | 使用Docker部署DashMachine个人书签工具 前言一、DashMachine介绍DashMachine简介DashMachine使用场景二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署DashMachine服务下载镜像创建容器创建容器检查容器状态检查服务端口安全设置四、访问Das…

SQL进阶知识:一、高级查询

今天介绍下关于高级查询的详细介绍,包括子查询、连接查询、分组查询等,并结合MySQL数据库提供实际例子。 一、子查询(Subqueries) 子查询是嵌套在另一个查询中的查询语句,通常用于提供条件过滤、生成临时数据集等。子…

【Git】Git Revert 命令详解

Git Revert 命令详解 1. Git Revert 的基本概念 Git Revert 是一个用于撤销特定提交的命令。与 Git Reset 不同,Git Revert 不会更改提交历史,而是会创建一个新的提交来撤销指定提交的更改。这意味着,使用 Git Revert 后,项目的…

华为S系列交换机CPU占用率高问题排查与解决方案

问题概述 在华为S系列交换机(V100&V200版本)运行过程中,CPU占用率过高是一个常见问题,可能导致设备性能下降甚至业务中断。根据华为官方维护宝典,导致CPU占用率高的主要原因可分为四大类:网络攻击、网络震荡、网络环路和硬件…

招募队员问题

#include <bits/stdc.h> using namespace std;int main() {int n;cin >> n; // 输入队伍人数&#xff08;行数&#xff09;vector<int> maxx(5, 0); // 用于记录每个数字&#xff08;1~5&#xff09;出现的最大连续段长度// 定义二维数组 team&#xff0c;n …

2025.04.19react面试题

以下是整理的 20 道 React 面试题&#xff0c;涵盖基础、进阶和实战应用&#xff0c;适用于社招或内推准备&#xff1a; 一、React 基础&#xff08;适合初中级&#xff09; React 中的组件有哪几种&#xff1f;它们有什么区别&#xff1f; 什么是 JSX&#xff1f;它与 HTML 有…

Python爬虫从入门到实战详细版教程Char01:爬虫基础与核心技术

1.1 什么是网络爬虫? 1.1.1 定义与分类 网络爬虫:互联网世界的“信息捕手” 网络爬虫(Web Crawler),又称网络蜘蛛或网络机器人,是一种通过预设规则自动访问网页、提取数据的程序系统。从技术视角看,其核心任务是通过模拟浏览器行为向目标服务器发起请求,解析网页内容…

Python爬虫实战:获取xie程网近两周长沙飞敦煌机票数据,为51出行做参考

一、引言 1.1 研究背景 伴随互联网技术的迅猛发展与人们生活水平的显著提升,在线旅游平台成为人们出行预订的重要途径。其中,飞机作为高效快捷的长途出行方式备受青睐。xie程网作为国内领先的在线旅游平台,汇聚了丰富的机票信息。对于计划在 51 出行期间从长沙飞往敦煌的旅…

Mujoco robosuite 机器人模型

import ctypes import os# 获取当前脚本所在的目录 script_dir os.path.dirname(os.path.abspath(__file__))# 构建库文件的相对路径 lib_relative_path os.path.join(dynamic_models, UR5e, Jb.so)# 拼接成完整的路径 lib_path os.path.join(script_dir, lib_relative_path…

【重学Android】02.Java环境配置的一些分享

背景说明 其实只是学习Android的话&#xff0c;只要下载好Android Studio开发工具&#xff0c;是自带JDK环境的&#xff0c;所以不需要再额外去进行配置&#xff0c;我之所以还要进行单独配置&#xff0c;是因为我其他的工具需要Java的环境&#xff0c;而且我目前用的是JDK 12…

Linux 网络编程:select、poll 与 epoll 深度解析 —— 从基础到高并发实战

一、IO 多路复用&#xff1a;解决并发 IO 的核心技术 在网络编程中&#xff0c;当需要同时处理大量客户端连接时&#xff0c;传统阻塞式 IO 会导致程序卡在单个操作上&#xff0c;造成资源浪费。IO 多路复用技术允许单线程监听多个文件描述符&#xff08;FD&#xff09;&#…

制作你的时间管理“局”#自制软件,5款AI编程对比测试

玩 AI 编程最有意思的地方&#xff0c;就是当你有想法的时候&#xff0c;可以随时测试、把想法具体化&#xff0c;甚至产品化。今天我们制作一个事件管理器&#xff0c;用来量化我们每天的时间安排&#xff0c;提高时间的利用率&#xff0c;提升生产力。 同样的一组 prompt &am…

大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署--完结

大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署 1. ClickHouse与MySQL的区别2. 在群集的所有机器上安装ClickHouse服务端2.1. 在线安装clickhouse2.2. 离线安装clickhouse 3. ClickHouse Keeper/Zookeeper集群安装4. 在配置文件中设置集群配置5. 在每…

宏碁笔记本电脑怎样开启/关闭触摸板

使用快捷键&#xff1a;大多数宏碁笔记本可以使用 “FnF7” 或 “FnF8” 组合键来开启或关闭触摸板&#xff0c;部分型号可能是 “FnF2”“FnF9” 等。如果不确定&#xff0c;可以查看键盘上的功能键图标&#xff0c;一般有触摸板图案的按键就是触摸板的快捷键。通过设备管理器…

使用Mybaitis-plus提供的各种的免写SQL的Wrapper的使用方式

文章目录 内连接JoinWrappers.lambda和 new MPJLambdaWrapper 生成的MPJLambdaWrapper对象有啥区别&#xff1f;LambdaQueryWrapper 和 QueryWrapper的区别&#xff1f;LambdaQueryWrapper和MPJLambdaQueryWrapper的区别&#xff1f;在作单表更新时建议使用&#xff1a;LambdaU…

基于微信小程序的走失儿童帮助系统-项目分享

基于微信小程序的走失儿童帮助系统-项目分享 项目介绍项目摘要管理员功能图用户功能图系统功能图项目预览首页走失儿童个人中心走失儿童管理 最后 项目介绍 使用者&#xff1a;管理员、用户 开发技术&#xff1a;MySQLJavaSpringBootVue 项目摘要 本系统采用微信小程序进行开…

P3916 图的遍历

P3916 图的遍历 题目来源-洛谷 题意 有向图中&#xff0c;找出每个节点能访问到的最大的节点 思路 每个节点的最大节点&#xff0c;不是最长距离&#xff0c;如果是每个节点都用dfs去找最大值&#xff0c;显然1e6*1e6 超时了&#xff0c;只能60分从第一个节点开始遍历&…

掌握常见 HTTP 方法:GET、POST、PUT 到 CONNECT 全面梳理

今天面试还问了除了 get 和 post 方法还有其他请求方法吗&#xff0c;一个都不知道&#xff0c;这里记录下。 &#x1f310; 常见 HTTP 请求方法一览 方法作用描述是否幂等是否常用GET获取资源&#xff0c;参数一般拼接在 URL 中✅ 是✅ 常用POST创建资源 / 提交数据&#xff…

裸金属服务器的应用场景有哪些?

随着云计算技术不断发展&#xff0c;裸金属服务器作为一台既具有传统物理服务器特点的硬件设备&#xff0c;还具备云计算技术的服务器化服务功能&#xff0c;是硬件和软件相结合的网络设备&#xff0c;逐渐被越来越多的企业所关注&#xff0c;那么&#xff0c;裸金属服务器的应…