【发布时间】:2011-03-05 10:58:08
【问题描述】:
我正在使用 Haskell,但我似乎没有找到支持命名组的 REGEX 包,所以我必须自己实现它。 基本上我的 api 的用户会使用一些带有命名组的正则表达式来取回地图中捕获的组 所以
/(?P<name>[a-z]*)/hhhh/(?P<surname>[a-z]*)/jjj on /foo/hhhh/bar/jjj
会给
[("name","foo"),("surname","bar")]
我正在使用相对较小的字符串进行规范的简单实现,因此目前性能不是主要问题。
为了解决这个问题,我想我会写一个元正则表达式,它将应用于用户的正则表达式
/(?P<name>[a-z]*)/hhhh/(?P<surname>[a-z]*)/jjj
提取组的名称并将其替换为没有可获取的内容
0 -> name
1 -> surname
然后正则表达式变成
/([a-z]*)/hhhh/([a-z]*)/jjj
然后将其应用于字符串,并使用索引对匹配的名称进行分组。
两个问题:
- 这似乎是个好主意?
- 什么是我需要捕获和替换命名组语法的元正则表达式
对于那些不熟悉命名组http://www.regular-expressions.info/named.html
注意:我从命名组中需要的只是用户为匹配项命名,因此只给我这个的命名组的子集就可以了。
【问题讨论】:
-
那么你最后做了什么?我实际上也需要命名组