在Ruby(PCRE)中,是否可以使用反向引用捕獲的十進制值來定義重複長度?反向引用定義的正則表達式重複
/^(\d+),.{\1}/.match('4,abcdefgh') # Should match '4,abcd'
上面的代碼只是返回nil
(找不到匹配項)。
在Ruby(PCRE)中,是否可以使用反向引用捕獲的十進制值來定義重複長度?反向引用定義的正則表達式重複
/^(\d+),.{\1}/.match('4,abcdefgh') # Should match '4,abcd'
上面的代碼只是返回nil
(找不到匹配項)。
您可以使用String#to_i
,它給你在開始數:
str = '4,abcdefgh'
str.match(/^(\d+),.{#{str.to_i}}/) # => #<MatchData "4,abcd" 1:"4">
不錯的一個,✅.... –
不,你不能這樣做,用正則表達式。如果十進制值的範圍卻是有限的,你可以建立一個包含所有可能的組合,就像一個正則表達式:
'1abcde2abcde3abcde4abcde'.scan(/1.{1}|2.{2}|3.{3}|4.{4}/)
#=> ["1a", "2ab", "3abc", "4abcd"]
你可以用兩個正則表達式:
str = '4,abcdefgh'
str =~ /\A(\d+,)/
str[0,$1.size+$1.to_i]
#=> "4,abcd"
的正則表達式沒有得到元。 – ndn
之後以編程方式進行。 – Jan
這可能是一個XY問題。 – sawa