ruby - 在 Ruby 正则表达式中使用 ^ 字符向后看

标签 ruby regex

为什么在 Ruby 中,前两个正则表达式无法匹配而第三个匹配?

str = 'ID: 4'
regex1 = /^(?<=ID: )\d+/
regex2 = /\A(?<=ID: )\d+/
regex3 = /(?<=ID: )\d+/

str.match(regex1)  # => nil
str.match(regex2) #=> nil
str.match(regex3) #=> #<MatchData "4">

唯一的区别是 ^\A 字符,它们分别匹配行的开头和字符串的开头。似乎两者都应该由 str 匹配。

最佳答案

后视模式 (?<=ID: )匹配字符串中以 «ID: » 开头的位置 .

anchor ^\A匹配行或字符串开头的位置

所以模式\A(?<=ID: )要求两者匹配在一起,即字符串的开头是 «ID: » .不会发生的!

关于ruby - 在 Ruby 正则表达式中使用 ^ 字符向后看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17281940/

相关文章:

php - 如何在 php 正则表达式中的下划线后创建大写字母

ruby-on-rails - 在 Rails 中使用 AES 密码 block 链接解密字符串

Javascript - 来自 "{"任务的正则表达式“:"' + t '",. *"}"返回整个字符串

ruby - Here-Docs with if then else 语句

ruby-on-rails - Rails 根据另一个属性的值验证模型属性

Elixir 中的 RegEx 捕获组

python - 如何提取字符串始终位于特定字符串之后,并且可以选择后跟一个字符串

c# - 正则表达式用 <br> 标签替换多个换行符

ruby-on-rails - 如何阻止访问管理命名空间

ruby - 在Wercker中启动ElasticSearch