Ruby - 正则表达式

Ruby - 正则表达式 首页 / Ruby入门教程 / Ruby - 正则表达式

正则表达式是特殊的字符序列,可帮助您使用模式中保留的特殊语法来匹配或查找其他字符串或字符串集。

正则表达式文字是斜线之间或任意定界符之间的模式,后跟%r,如下所示-

正则语法

/pattern/
/pattern/im    # option can be specified
%r!/usr/local! # general delimited regular expression

示例

#!/usr/bin/ruby

line1="Cats are smarter than dogs";
line2="Dogs also like meat";

if ( line1 =~ /Cats(.*)/)
   puts "Line1 contains Cats"
end
if ( line2 =~ /Cats(.*)/)
   puts "Line2 contains  Dogs"
end

这将产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/ruby/ruby-regular-expressions.html

来源:LearnFk无涯教程网

Line1 contains Cats

正则修饰符

正则表达式文字可以包括可选的修饰符,以控制匹配的各个方面。

Sr.No.Remark
1

i

匹配文本时忽略大小写。

2

o

仅在第一次判断regexp文字时执行一次#{}插值。

3

x

忽略空格,并允许使用正则表达式进行注释。

4

m

匹配多行,将换行符识别为普通字符。

5

u,e,s,n

将正则表达式解释为Unicode(UTF-8),EUC,SJIS或ASCII。如果未指定这些修饰符,则假定正则表达式使用源编码。

就像用%Q分隔的字符串文字一样,Ruby允许您以%r开头正则表达式,后跟您选择的分隔符。当您描述的模式包含许多不想转义的正斜杠字符时,这很有用-

# Following matches a single slash character, no escape required
%r|/|

# Flag characters are allowed with this syntax, too
%r[</(.*)>]i

正则表达模式

除控制字符(+?。* ^&dollar;()[] {} |\)外,所有字符均匹配。 您可以在控制字符前加反斜杠来对其进行转义。

搜索和替换

使用正则表达式的一些最重要的String方法是 sub 和 gsub ,以及它们的变体 sub!和 gsub !。

sub 和 gsub 返回一个新字符串,保留原始字符串不变,其中 sub!和 gsub!修改调用它们的字符串。

#!/usr/bin/ruby

phone="2004-959-559 #This is Phone Number"

# Delete Ruby-style comments
phone=phone.sub!(/#.*$/, "")   
puts "Phone Num : #{phone}"

# Remove anything other than digits
phone=phone.gsub!(/\D/, "")    
puts "Phone Num : #{phone}"

这将产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/ruby/ruby-regular-expressions.html

来源:LearnFk无涯教程网

Phone Num : 2004-959-559
Phone Num : 2004959559

以下是另一个示例-

#!/usr/bin/ruby

text="rails are rails, really good Ruby on Rails"

# Change "rails" to "Rails" throughout
text.gsub!("rails", "Rails")

# Capitalize the word "Rails" throughout
text.gsub!(/\brails\b/, "Rails")
puts "#{text}"

这将产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/ruby/ruby-regular-expressions.html

来源:LearnFk无涯教程网

Rails are Rails, really good Ruby on Rails

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

人工智能基础课 -〔王天一〕

从0开始学大数据 -〔李智慧〕

Web安全攻防实战 -〔王昊天〕

Redis核心技术与实战 -〔蒋德钧〕

代码之丑 -〔郑晔〕

搞定音频技术 -〔冯建元 〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

运维监控系统实战笔记 -〔秦晓辉〕

Midjourney入门实践课 -〔Jovi〕

好记忆不如烂笔头。留下您的足迹吧 :)