Symbolic Group Names (like in Python) in Ruby Regular Expression
Came across this handy regular expression utility in Python (I am a beginner in Python). e.g. By using the regexp
(?P<id>[a-zA-Z_]\w*)
I can refer to the matched data as
m.group('id')
(Full documentation: look for "symbolic group name" here)
In Ruby, we can access the matched references using $1, $2
or using the MatchData object (m[1], m[2]开发者_StackOverflow社区
etc.). Is there something similar to Python's Symbolic Group Names in Ruby?
Older Ruby releases didn't have named groups (tx Alan for pointing this out in a comment!), but, if you're using Ruby 1.9...:
(?<name>subexp)
expresses a named group in Ruby expressions too; \k<name>
is the way you back-reference a named group in substitution, if that's what you're looking for!
Ruby 1.9 introduced named captures:
m = /(?<prefix>[A-Z]+)(?<hyphen>-?)(?<digits>\d+)/.match("THX1138.")
m.names # => ["prefix", "hyphen", "digits"]
m.captures # => ["THX", "", "1138"]
m[:prefix] # => "THX"
You can use \k<prefix>
, etc, for back-references.
精彩评论