广告
返回顶部
首页 > 资讯 > 精选 >Ruby正则表达式怎么使用
  • 431
分享到

Ruby正则表达式怎么使用

2023-07-06 01:07:50 431人浏览 薄情痞子
摘要

这篇文章主要介绍了Ruby正则表达式怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Ruby正则表达式怎么使用文章都会有所收获,下面我们一起来看看吧。Ruby 正则表达式正则表达式是一种特殊序列的字符,它

这篇文章主要介绍了Ruby正则表达式怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Ruby正则表达式怎么使用文章都会有所收获,下面我们一起来看看吧。

Ruby 正则表达式

正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找字符串集合

正则表达式用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。

语法

正则表达式从字面上看是一种介于斜杠之间或介于跟在 %r 后的任意分隔符之间的模式,如下所示:

/pattern//pattern/im    # 可以指定选项%r!/usr/local! # 使用分隔符的正则表达式

实例

#!/usr/bin/ruby line1 = "Cats are smarter than dogs";line2 = "Dogs also like meat"; if ( line1 =~ /Cats(.*)/ )  puts "Line1 contains Cats"endif ( line2 =~ /Cats(.*)/ )  puts "Line2 contains  Dogs"end

以上实例运行输出结果为:

Line1 contains Cats

正则表达式修饰符

正则表达式从字面上看可能包含一个可选的修饰符,用于控制各方面的匹配。修饰符在第二个斜杠字符后指定,如上面实例所示。下标列出了 可能的修饰符:

修饰符描述
i当匹配文本时忽略大小写。
o只执行一次 #{} 插值,正则表达式在第一次时就进行判断。
x忽略空格,允许在整个表达式中放入空白符和注释。
m匹配多行,把换行字符识别为正常字符。
u,e,s,n把正则表达式解释为 Unicode(UTF-8)、EUC、SJIS 或 ASCII。如果没有指定修饰符,则认为正则表达式使用的是源编码。

 就像字符串通过 %Q 进行分隔一样,Ruby 允许您以 %r 作为正则表达式的开头,后面跟着任意分隔符。这在描述包含大量您不想转义的斜杠字符时非常有用。

# 下面匹配单个斜杠字符,不转义%r|/|                # Flag 字符可通过下面的语法进行匹配%r[</(.*)>]i

正则表达式模式

除了控制字符,(+ ? . * ^ $ ( ) [ ] { } | ),其他所有字符都匹配本身。您可以通过在控制字符前放置一个反斜杠来对控制字符进行转义。

下表列出了 Ruby 中可用的正则表达式语法。

模式描述
^匹配行的开头。
$匹配行的结尾。
.匹配除了换行符以外的任意单字符。使用 m 选项时,它也可以匹配换行符。
[&hellip;]匹配在方括号中的任意单字符。
[^&hellip;]匹配不在方括号中的任意单字符。
re*匹配前面的子表达式零次或多次。
re+匹配前面的子表达式一次或多次。
re?匹配前面的子表达式零次或一次。
re{ n}匹配前面的子表达式 n 次。
re{ n,}匹配前面的子表达式 n 次或 n 次以上。
re{ n, m}匹配前面的子表达式至少 n 次至多 m 次。
a| b匹配 a 或 b。
(re)对正则表达式进行分组,并记住匹配文本。
(?imx)暂时打开正则表达式内的 i、 m 或 x 选项。如果在圆括号中,则只影响圆括号内的部分。
(?-imx)暂时关闭正则表达式内的 i、 m 或 x 选项。如果在圆括号中,则只影响圆括号内的部分。
(?: re)对正则表达式进行分组,但不记住匹配文本。
(?imx: re)暂时打开圆括号内的 i、 m 或 x 选项。
(?-imx: re)暂时关闭圆括号内的 i、 m 或 x 选项。
(?#&hellip;)注释。
(?= re)使用模式指定位置。没有范围。
(?! re)使用模式的否定指定位置。没有范围。
(?> re)匹配无回溯的独立模式。
\w匹配单词字符。
\W匹配非单词字符。
\s匹配空白字符。等价于 [\t\n\r\f]。
\S匹配非空白字符。
\d匹配数字。等价于 [0-9]。
\D匹配非数字。
\A匹配字符串的开头。
\Z匹配字符串的结尾。如果存在换行符,则只匹配到换行符之前。
\z匹配字符串的结尾。
\G匹配最后一个匹配完成的点。
\b当在括号外时匹配单词边界,当在括号内时匹配退格键(0x08)。
\B匹配非单词边界。
\n, \t, etc.匹配换行符、回车符、制表符,等等。
\1&hellip;\9匹配第 n 个分组子表达式。
\10如果已匹配过,则匹配第 n 个分组子表达式。否则指向字符编码的八进制表示。

 正则表达式实例

字符

实例描述
/ruby/匹配 “ruby”
&yen;匹配 Yen 符号。Ruby 1.9 和 Ruby 1.8 支持多个字符。

 字符类

实例描述
/[Rr]uby/匹配 “Ruby” 或 “ruby”
/rub[ye]/匹配 “ruby” 或 “rube”
/[aeiou]/匹配任何一个小写元音字母
/[0-9]/匹配任何一个数字,与 /[0123456789]/ 相同
/[a-z]/匹配任何一个小写 ASCII 字母
/[A-Z]/匹配任何一个大写 ASCII 字母
/[a-zA-Z0-9]/匹配任何一个括号内的字符
/[^aeiou]/匹配任何一个非小写元音字母的字符
/[^0-9]/匹配任何一个非数字字符

 特殊字符类

实例描述
/./匹配除了换行符以外的其他任意字符
/./m在多行模式下,也能匹配换行符
/\d/匹配一个数字,等同于 /[0-9]/
/\D/匹配一个非数字,等同于 /[^0-9]/
/\s/匹配一个空白字符,等同于 /[ \t\r\n\f]/
/\S/匹配一个非空白字符,等同于 /[^ \t\r\n\f]/
/\w/匹配一个单词字符,等同于 /[A-Za-z0-9_]/
/\W/匹配一个非单词字符,等同于 /[^A-Za-z0-9_]/

 重复

实例描述
/ruby?/匹配 “rub” 或 “ruby”。其中,y 是可有可无的。
/ruby*/匹配 “rub” 加上 0 个或多个的 y。
/ruby+/匹配 “rub” 加上 1 个或多个的 y。
/\d{3}/刚好匹配 3 个数字。
/\d{3,}/匹配 3 个或多个数字。
/\d{3,5}/匹配 3 个、4 个或 5 个数字。

 非贪婪重复

这会匹配最小次数的重复。

实例描述
/<.*>/贪婪重复:匹配 “perl>”
/<.*?>/非贪婪重复:匹配 “perl>” 中的 “”

 通过圆括号进行分组

实例描述
/\D\d+/无分组: + 重复 \d
/(\D\d)+/分组: + 重复 \D\d 对
/([Rr]uby(, )?)+/匹配 “Ruby”、“Ruby, ruby, ruby”,等等

 反向引用

这会再次匹配之前匹配过的分组。

实例描述
/([Rr])uby&\1ails/匹配 ruby&rails 或 Ruby&Rails
/(['"])(??????!\1).)*\1/单引号或双引号字符串。\1 匹配第一个分组所匹配的字符,\2 匹配第二个分组所匹配的字符,依此类推。

 替换

实例描述
/ruby|rube/匹配 “ruby” 或 “rube”
/rub(y|le)/匹配 “ruby” 或 “ruble”
/ruby(!+|?)/“ruby” 后跟一个或多个 ! 或者跟一个 ?

 

这需要指定匹配位置。

实例描述
/^Ruby/匹配以 “Ruby” 开头的字符串或行
/Ruby$/匹配以 “Ruby” 结尾的字符串或行
/\ARuby/匹配以 “Ruby” 开头的字符串
/Ruby\Z/匹配以 “Ruby” 结尾的字符串
/\bRuby\b/匹配单词边界的 “Ruby”
/\brub\B/\B 是非单词边界:匹配 “rube” 和 “ruby” 中的 “rub”,但不匹配单独的 “rub”
/Ruby(?=!)/如果 “Ruby” 后跟着一个感叹号,则匹配 “Ruby”
/Ruby(?!!)/如果 “Ruby” 后没有跟着一个感叹号,则匹配 “Ruby”

 圆括号的特殊语法

实例描述
/R(?#comment)/匹配 “R”。所有剩余的字符都是注释。
/R(?i)uby/当匹配 “uby” 时不区分大小写。
/R(?i:uby)/与上面相同。
/rub(?:y|le))/只分组,不进行 \1 反向引用

搜索和替换

sub 和 gsub 及它们的替代变量 sub! 和 gsub! 是使用正则表达式时重要的字符串方法。

所有这些方法都是使用正则表达式模式执行搜索与替换操作。sub 和 sub! 替换模式的第一次出现,gsub 和 gsub! 替换模式的所有出现。

sub 和 gsub 返回一个新的字符串,保持原始的字符串不被修改,而 sub! 和 gsub! 则会修改它们调用的字符串。

实例

#!/usr/bin/ruby# -*- coding: UTF-8 -*- phone = "138-3453-1111 #这是一个电话号码" # 删除 Ruby 的注释phone = phone.sub!(/#.*$/, "")   puts "电话号码 : #{phone}" # 移除数字以外的其他字符phone = phone.gsub!(/\D/, "")    puts "电话号码 : #{phone}"

以上实例运行输出结果为:

电话号码 : 138-3453-1111 电话号码 : 13834531111

实例

#!/usr/bin/ruby# -*- coding: UTF-8 -*- text = "rails 是 rails,  Ruby on Rails 非常好的 Ruby 框架" # 把所有的 "rails" 改为 "Rails"text.gsub!("rails", "Rails") # 把所有的单词 "Rails" 都改成首字母大写text.gsub!(/\brails\b/, "Rails") puts "#{text}"

以上实例运行输出结果为:

Rails 是 Rails,  Ruby on Rails 非常好的 Ruby 框架

关于“Ruby正则表达式怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Ruby正则表达式怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Ruby正则表达式怎么使用

本文链接: https://www.lsjlt.com/news/356706.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Ruby正则表达式怎么使用
    这篇文章主要介绍了Ruby正则表达式怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Ruby正则表达式怎么使用文章都会有所收获,下面我们一起来看看吧。Ruby 正则表达式正则表达式是一种特殊序列的字符,它...
    99+
    2023-07-06
  • Ruby正则表达式详解
    目录Ruby 正则表达式语法实例正则表达式修饰符正则表达式模式 正则表达式实例字符 字符类 特殊字符类 重复 非贪婪重复 ...
    99+
    2023-05-15
    Ruby 正则表达式 Ruby 正则表达式详解 Ruby 正则表达式实例
  • Ruby正则表达式与Perl有什么区别
    这篇文章主要介绍Ruby正则表达式与Perl有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Ruby语言虽然说是一种比较新的编程语言,但是它还是和其他语言有不少的相似之处。比如在Ruby正则表达式方面,就和P...
    99+
    2023-06-17
  • 在python正则表达式中是怎样正确使用正则表达式
    这篇文章将为大家详细讲解有关在python正则表达式中是怎样正确使用正则表达式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。现在我们已经看了一些简单的正则表达式,那么我们实际在 Python...
    99+
    2023-06-17
  • pcre正则表达式怎么使用
    PCRE正则表达式的使用可以分为两个步骤:编译和匹配。1. 编译正则表达式:可以使用`preg_compile()`函数来编译一个正...
    99+
    2023-09-29
    pcre
  • js 怎么使用正则表达式
    在 JavaScript 中,可以使用正则表达式的两种方式:使用 RegExp 对象或者使用正则表达式字面量。1. 使用 RegEx...
    99+
    2023-09-20
    js
  • 怎么使用javascript正则表达式
    本篇内容介绍了“怎么使用javascript正则表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!表单验...
    99+
    2022-10-19
  • C++怎么使用正则表达式
    今天小编给大家分享一下C++怎么使用正则表达式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。目正则表达式正则表达式(regu...
    99+
    2023-06-30
  • Python中怎么使用正则表达式及正则表达式匹配规则是什么
    1 导库import re2 使用模板re_pattern = re.compile(pattern, flags=0) result = re.findall(re_pattern,string)3 说明参数描述pattern匹配的正则表...
    99+
    2023-05-14
    Python
  • Oracle正则表达式怎么用
    这篇文章给大家分享的是有关Oracle正则表达式怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。oracle正则表达式 ORACLE中的支持正则表达式的函数主要有下面四个: ...
    99+
    2022-10-18
  • JavaScript正则表达式怎么用
    这篇文章主要为大家展示了“JavaScript正则表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript正则表达式怎么用”这篇文章吧。什...
    99+
    2022-10-19
  • VB.NET正则表达式怎么用
    小编给大家分享一下VB.NET正则表达式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、引言在通常的程序设计中,对字符串的操作是不可缺少的部分。例如,我们...
    99+
    2023-06-17
  • Flex正则表达式怎么用
    这篇文章主要为大家展示了“Flex正则表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex正则表达式怎么用”这篇文章吧。Flex正则表达式学习一般来说各个开发环境或者语言对于Fle...
    99+
    2023-06-17
  • Shell正则表达式怎么用
    这篇文章将为大家详细讲解有关Shell正则表达式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、正则表达式是什么?正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、...
    99+
    2023-06-09
  • MongoDB中怎么使用正则表达式
    MongoDB中怎么使用正则表达式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 如果要想实现模糊查询,那么必须使...
    99+
    2022-10-18
  • 正则表达式工具怎么使用
    使用正则表达式工具可以按照以下步骤进行:选择一个正则表达式工具:首先,你需要选择一个适合你需求的正则表达式工具。你可以选择在线工具,如Regex101、RegExr,或者使用文本编辑器插件,如Sublime Text、Visual Stud...
    99+
    2023-07-10
  • C#使用正则表达式
    一.正则基础 1. []方括号表示匹配可以匹配方括号中的任意点单个字符,方括号只允许匹配单个字符。2. | 或表示两项之间的一个选择,它不能和方括号使用,只能和小括号使用。3. ()...
    99+
    2022-11-13
  • Python中使用正则表达式及正则表达式匹配规则详解
    目录1 导库2 使用模板3 说明4 示例5 正则表达式匹配规则1 导库 import re 2 使用模板 re_pattern = re.compile(pattern, flags...
    99+
    2023-03-22
    Python正则表达式匹配规则 Python正则表达式
  • SQL正则表达式及mybatis中使用正则表达式的方法
    小编给大家分享一下SQL正则表达式及mybatis中使用正则表达式的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql...
    99+
    2022-10-18
  • Java中怎么用正则表达式
    这篇文章将为大家详细讲解有关Java中怎么用正则表达式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。学习正则表达式,用Jdk1.4后的java.util.regex模式:我们来看一些更常用的表达式的种类文...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作