gpt4 book ai didi

ruby - 带反向引用的正则表达式

转载 作者:数据小太阳 更新时间:2023-10-29 07:20:37 26 4
gpt4 key购买 nike

任何人都可以解释反向引用在 ruby​​ 正则表达式中的工作原理吗?我特别想知道 (..) 分组是如何工作的。例如:

s = /(..) [cs]\1/.match("The cat sat in the hat")

puts s

对于上面的代码片段,输出是:at sat。为什么/如何获得此输出?

最佳答案

下面是这个正则表达式的意思:

regex = /(..) [cs]\1/
# ├──┘ ├──┘├┘
# │ │ └─ A reference to whatever was in the first matching group.
# │ └─ A "character class" matching either "c" or "s".
# └─ A "matching group" referenced by "\1" containing any two characters.

请注意,在将正则表达式与匹配组匹配后,特殊变量 $1($2 等)将包含匹配的内容。

/(..) [cs]\1/.match('The cat sat in the hat') # => #<MatchData...>
$1 # => "at"

另请注意 the Regexp#match method返回一个 MatchData 对象,它包含导致整个匹配的字符串(“at sat”,又名 $&),然后是每个匹配组(“at”,又名 $1) ):

/(..) [cs]\1/.match('The cat sat in the hat')
=> #<MatchData "at sat" 1:"at">

关于ruby - 带反向引用的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com