`
秦朝古月
  • 浏览: 227565 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

读《The Ruby Way》之正则表达式

    博客分类:
  • Ruby
阅读更多
世界杯开幕了,看了三场球。南非1-1墨西哥,法国0-0乌拉圭,韩国2-0希腊。看了法国的表现,就知道为什么会输给中国了,而看了韩国队的表现,不得不担心中国队的差距。无论如何祝福中国队,虽然讨厌韩国,但也祝福包括韩日在内的亚洲球队能走得更远。

锚(anchor)。锚不与字符串开头与末尾匹配,而与行首和行尾匹配。
string = "abc\ndef\nghi"
/^def/ =~ string    # 4
/def$/ =~ string    # 4

而\A 和\Z 匹配字符窜本身的开头和末尾。\Z 可以匹配最后一个换行符,而\z 不可以。
string = "abc\ndef\nghi"
/\Adef/ =~ string    # nil
/def\Z/ =~ string    # nil
/\Aabc/ =~ string    # 0
/ghi\Z/ =~ string    # 8
str2 << "\n"
/ghi\Z/ =~ string    # 8
/ghi\z/ =~ string    # nil

\b 匹配单词边界,\B 匹配非单词边界的位置。
str = "this is a test"
str.gsub(/\b/, "|")     # "|this| |is| |a| |test|"
str.gsub(/\B/, "-")     # "t-h-i-s i-s a t-e-s-t"

量词符
/x{5}/       # 5个x
/x{5,7}/     # 5到7个x
/x{,8}/      # 最多8个x,会有警告
/x{3,}/      # 最少3个x

贪婪
str = "Where the sea meets the moon-blanch'd land,"
match = /.*?the/.match(str)
p match[0]       # 结果是Where the sea meets the,而不是Where the。

正负预查
s1 = "New World Dictionary"
s2 = "New World Symphony"
s3 = "New World Order"
reg = /New World(?= Dictionary| Symphony)/ # 正预查
m1 = reg.match(s1)
m1.to_a[0]            # "New World"
m2 = reg.match(s2)
m2.to_a[0]            # "New World"
m3 = reg.match(s3)    # nil
reg2 = /New World(?! Symphony)/            # 负预查
m1 = reg2.match(s1)
m1.to_a[0]            # "New World"
m2 = reg2.match(s2)    # nil
m3 = reg2.match(s3)
m3.to_a[0]            # "New World"

非捕获组
str = "a123b45c678"
str.sub(/(a\d+)(?:b\d+)(c\d+)/, "1st=\\1, 2nd=\\2, 3rd=\\3")
# "1st=a123, 2nd=c678, 3rd="

内嵌子表达式。可以用来防止贪婪。
str = "abccccdef"
re1 = /(abc*)cdef/
re2 = /(?>abc*)cdef/
re1 =~ str       # 0
re2 =~ str       # nil,子表达式使用了全部的c
分享到:
评论

相关推荐

    Addison Wesley The Ruby Way 2Nd Edition Oct 2006.pdf(英文版)

    ### Addison Wesley《The Ruby Way》第二版(2006年10月) #### 书籍概览 《The Ruby Way》是由Hal Fulton编写的关于Ruby编程语言的经典著作,该书的第二版出版于2006年10月,由Addison Wesley Professional出版社...

    the ruby way

    它覆盖了Ruby的基础语法、类和对象、模块、集合、文件和I/O、网络编程、正则表达式、线程和并发、元编程等方面,以及如何利用Gem进行项目开发。无论是初学者还是有经验的开发者,都能从中受益,提升Ruby编程技能。

    Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm

    Ruby的标准库非常丰富,书中会介绍一些常用的库,如Net::HTTP用于网络请求,JSON和YAML用于数据序列化,Regexp用于正则表达式匹配,以及Open3和PTY用于进程管理和交互。这些库大大扩展了Ruby的功能,使其在各种场景...

    关于ruby的几本电子书

    它深入探讨了Ruby语言的各种特性,包括基础语法、面向对象编程、模块和类、异常处理、文件系统操作、网络编程以及正则表达式等。书中的例子丰富,旨在帮助读者理解并掌握Ruby的精髓,从而能以"Ruby Way"的方式来思考...

    Ruby语言入门教程

    数组、字符串、正则表达式和迭代器、代码块、闭包是Ruby语言在实际编程中不可或缺的部分,掌握它们对于高效编程是必不可少的。 最后,元编程部分将探讨Ruby语言中动态添加方法和属性,以及操作类和模块的能力,这是...

    Ruby语言教程&案例&相关项目资源.docx

    - **字符串处理**:提供丰富的字符串处理功能,如字符串插值、多行字符串、正则表达式等。 - **异常处理**:支持异常处理机制,能够捕获并处理程序运行时出现的异常情况。 #### 应用领域 - **Web开发**:Ruby最...

    pythonchallenge level2官方方法集

    更简单的正则表达式,正则表达式是处理字符串的强大工具,这里强调了其在解决特定问题时的简化应用。 #### 42. PHP Solution PHP解决方案,展示了PHP语言在Web开发领域解决问题的能力和灵活性。 #### 43. Another...

Global site tag (gtag.js) - Google Analytics