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.pswp.cn/diannao/80090.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80090.shtml
英文地址,請注明出處:http://en.pswp.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;裸金屬服務器的應…