php正则表达式中命名子组,.net – 在正则表达式中使用嵌套的命名组,是否可以导航层次结构?...

我开发了一个匹配

pstops页面规范的正则表达式. (正则表达式空白不重要.)

^(?:(?\d+):)?

(?

(?

(?-?\d+)

(?[RUL]?)?

(?:@(?\d*(?:\.\d+)))?

(?:\(

(?\d*\.?\d+)(?in|cm|w|h)?,(?\d*\.?\d+)(?in|cm|w|h)?

\))?

\+?)+,?

)+$

.

'Sample string:

'"4:1L@.7(21cm,0)+-2L@.7(21cm,14.85cm),1L(21cm,14.85cm)"

如您所见,有嵌套的命名子组.例如,pagespec不需要指定旋转.我希望能够做到这一点:

If match.Groups("pages").Captures(0).Groups("pagespecs").Captures(1).Groups("rotation").Value > ""

但当然Captures没有Groups属性.有没有办法以这种方式访问​​层次结构中的子组?

编辑:这是一个更简单的例子(这次重要的空白区域):

(?(?:(?The (?boy|girl) is hungry\.|The (?mother|father) is angry\.)\s*)+)

与此字符串匹配:

The boy is hungry. The mother is angry. The girl is hungry.

产生一场比赛.在那场比赛中,

>组(“段落”)有一个匹配整个字符串的捕获.

>组(“句子”)有三个捕获.

>团体(“孩子”)有两个捕获,男孩和女孩.

>团体(“父母”)有一个捕获,母亲.

但没有什么可以告诉我父母的单一捕获位于第二次捕获的句子内,除非我开始查看每次捕获的索引和长度.

编辑:这是最终的答案:

^(?:(?\d+):)?

(?

(?

(?-?\d+)

(?[RUL]?)

(?:@(?\d*(?:\.\d+)))?

(?:\(

(?\d*\.?\d+)(?in|cm|w|h)?,(?\d*\.?\d+)(?in|cm|w|h)?

\))?

(?)(?)(?)(?)(?)(?)(?)

\+?)+,?

(?)

)+

这会将NULL推送到每个页面之间的pagespec堆栈上,因此它们可以与页面相关联;每个pagespec之间的每个其他命名堆栈上都有一个NULL.哎呀,解析很难……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值