ruby 正则表达式 使用量词符

简介:
正则表达式很多用来处理可选项和重复
例1:例子中?匹配0个或一个x
pattern= /ax?b/ 
puts pattern=~ "ab"     #0 
puts pattern=~ "axb"    #0 
puts pattern=~ "axxb"   #nil 
puts pattern=~ "acb"    #nil
例2:
pattern= /a[xy]?b/     
puts pattern=~ "ab"      #0
puts pattern=~ "axb"     #0
puts pattern=~ "ayb"     #0
puts pattern=~ "axyb"    #nil
[str]代表匹配其中一个字符,[str]?代表str中的其中一个字符有0个或1个
*代表0个或多个,+代表1个或多个
---匹配美国社会保险号的例子:
ssn= "987-65-4320" 
pattern =/\d\d\d-\d\d-\d\d\d\d/ 
puts pattern=~ssn              #0
这里的pattern可以写成 pattern=/\d{3}-\d{2}-\d{4}/
例3:
假设一个国家的电话号码由两部分组成:(第一部分3~5个数字)-(第二部分3~7个数字)
模式:pattern=/\d{3,5}-\d{3,7}/
开头与末尾的数字可选,但必须有其中的一个:
/x{5}/    #match 5 xs 
/x{5,7}/  #match 5-7 xs 
/x{,8}/   #match up to 8 xs 
/x{3,}/   #match at least 3 xs
所以量词符 ?,+和*可以这样重写:
/x?/ #same as /x{0,1}/ 
/x+/ #same as /x{1,}/ 
/x*/ #same as /x{0,}/
贪婪的“*”( greedy)
例:
str="where the sea meets the moon-blanch'd land," 
match=/.*the/.match(str) 
p match[0]
"where the sea meets the"
*是贪婪的,它匹配尽可能长的字符串,可以在它后面加上问号使其变为非贪婪的:
str="where the sea meets the moon-blanch'd land," 
match=/.*?the/.match(str) 
p match[0]
"where the"




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/68435,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
Ruby
|
4月前
|
Ruby
探索深究Ruby 正则表达式
【8月更文挑战第30天】
28 1
|
4月前
|
开发者 Ruby
Ruby正则表达式的奥秘:如何用简单的语法构建强大的文本匹配与处理工具?
【8月更文挑战第31天】正则表达式是文本匹配的强大工具,通过简单模式即可实现复杂文本处理。作为动态、面向对象的语言,Ruby提供了全面的正则表达式支持,涵盖创建、匹配、替换及分割等功能。本文通过示例代码介绍如何在Ruby中使用正则表达式进行文本匹配,并分享了编写正则表达式的最佳实践,帮助开发者提升文本处理效率与准确性,更好地利用这一工具构建高效系统。
37 0
|
7月前
|
机器学习/深度学习 Java 索引
39、一篇文章弄懂 Java 正则表达式中的量词、贪婪、勉强、独占和 String 的 matches 方法的底层【个人感觉非常值得学习】
39、一篇文章弄懂 Java 正则表达式中的量词、贪婪、勉强、独占和 String 的 matches 方法的底层【个人感觉非常值得学习】
68 0
|
7月前
|
Ruby
|
7月前
|
Ruby
|
vr&ar
正则表达式中的量词
正则表达式中的量词
83 0
|
JavaScript
js基础笔记学习202正则表达式语法3量词
js基础笔记学习202正则表达式语法3量词
72 0
js基础笔记学习202正则表达式语法3量词
|
Ruby 索引
【Ruby on Rails全栈课程】2.5 正则表达式
1、正则表达式(Regexp) 正则表达式是对字符串操作的公式,用来过滤字符串或者从字符串中匹配出我们需要的字符,在各类语言中都有应用
124 0
【Ruby on Rails全栈课程】2.5 正则表达式