为什么在 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/