开发者

Symbolic Group Names (like in Python) in Ruby Regular Expression

开发者 https://www.devze.com 2022-12-16 23:46 出处:网络
Came across this handy regular expression utility in Python (I am a beginner in Python). e.g. By using the regexp

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消