创建符合枚举段落的PHP RegEx

时间:2017-12-28 09:03:14

标签: php regex preg-match

我目前正在尝试创建一个正则表达式来匹配法律文章中的枚举,以便为它应用一些样式修改。

这是我现在的正则表达式:

    /\R([0-9a-zA-Z])(\.|\))(.*?)(\R\R|$)/gs

https://regex101.com/r/WtT0cT/1

正如您在regex101上看到的那样,问题在于枚举编号3中的子枚举。

我的正则表达式不需要也获取每个子枚举,但它应该获得属于此枚举的所有文本。这意味着对于3号,它应该得到以下结果:

  一些文字3      第3号中的更多文字

     

a)3中的子枚举a

     

b)3中的子枚举b

     

c)3中的子枚举c

     

d)3中的子枚举d

     

某些文本不属于子枚举但属于枚举3

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

\h*[0-9a-zA-Z][.)][\s\S]+?(?=\R+\d|$)

<强>解释

\h*         : 0 or more horizotal spaces
[0-9a-zA-Z] : 1 alphanumeric
[.)]        : dot or parenthesis
[\s\S]+?    : 1 or more any character, not greedy
(?=         : lookahead
  \R+\d     : 1 or more linebreak, followed by a digit
  |         : OR
  $         : end of string
)            : end lookahead

See in action