获取具有相同名称的多个子模式

sebastian_t

关于我的上一篇文章,我试图与正则表达式匹配,所有在类文件中使用use语句。

<?php
use Vendor\ProjectArticle\Model\Peer,
    Vendor\Library\Template;
use Vendor\Blablabla;

$file = file_get_contents($class_path);
$a = preg_match_all('#use (?:(?<ns>[^,;]+),?)+;#mi', $file, $use);
var_dump(array('$a' => $a, '$use' => $use));

不幸的是,在一个use语句中有多个类名的情况下,我不能幸免所有使用的命名空间。仅存储最后一个匹配项。

Array
(
    [$a] => 2
    [$use] => Array
        (
            [0] => Array
                (
                    [0] => use Vendor\ProjectArticle\Model\Peer,
    Vendor\Library\Template;
                    [1] => use Vendor\Blablabla;
                )

            [ns] => Array
                (
                    [0] => 
    Vendor\Library\Template
                    [1] => Vendor\Blablabla
                )

            [1] => Array
                (
                    [0] => 
    Vendor\Library\Template
                    [1] => Vendor\Blablabla
                )
        )
)

可以使用某些模式修改器或其他方法完成此操作吗?

〜谢谢

用户名

应该能够为此使用\G锚。

 # '~(?:(?!\A)\G|^Use\s+),?\s*(?<ns>[^,;]+)(?=(?:,|[^,;]*)*;)~mi'

 (?xmi-)                       # Inline modifier = expanded, multiline, case insensitive
 (?:
      (?! \A )                      # Not beginning of string
      \G                            # If matched before, start at end of last match
   |                              # or,
      ^ Use \s+                     # Beginning of line then 'Use' + whitespace 
 )

 ,? \s*                        # Whitespace trim
 (?<ns> [^,;]+ )               # (1), A namespace value

 (?=                           # Lookahead, each match validates a final ';'
      (?: , | [^,;]* )*
      ;
 )

输出:

 **  Grp 0 -  ( pos 0 , len 36 ) 
use Vendor\ProjectArticle\Model\Peer
 **  Grp 1 -  ( pos 4 , len 32 ) 
Vendor\ProjectArticle\Model\Peer

---------------------

 **  Grp 0 -  ( pos 36 , len 30 ) 
,
    Vendor\Library\Template
 **  Grp 1 -  ( pos 43 , len 23 ) 
Vendor\Library\Template

---------------------

 **  Grp 0 -  ( pos 69 , len 20 ) 
use Vendor\Blablabla
 **  Grp 1 -  ( pos 73 , len 16 ) 
Vendor\Blablabla

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取具有相同名称JAXB的多个XML元素

来自分类Dev

从多个表中获取具有相同名称的列

来自分类Dev

PHP SimpleXML-具有相同名称的多个子级

来自分类Dev

SQL Server XML查询:查询具有相同名称的多个子元素

来自分类Dev

具有相同名称的多个参数

来自分类Dev

具有相同名称的多个div

来自分类Dev

具有相同名称的多个输入

来自分类Dev

具有多个具有相同名称的字段的 POST

来自分类Dev

为具有相同名称的元素创建XML模式?

来自分类Dev

在VIM中收集具有相同名称模式的变量

来自分类Dev

如何使用jquery或javascript获取具有相同名称属性的多个文件的值?

来自分类Dev

是否可以从多个具有相同名称的元素中获取get_attribute()?

来自分类Dev

如何从具有相同名称的多个类的HTML中获取值?

来自分类Dev

尝试报废具有相同名称的多个div,但改为获取null

来自分类Dev

如何从具有相同名称的多个元素中获取单击元素,数组的不同索引索引

来自分类Dev

php具有相同名称的多个下拉菜单无法获取该值

来自分类Dev

jQuery:从具有相同名称的多个ID上获取按键上的jQuery Val

来自分类Dev

XPath - 如何获取具有相同名称的多个标签的列表

来自分类Dev

获取具有相同名称的所有属性

来自分类Dev

从具有相同名称的节点获取所有属性

来自分类Dev

使用XSLT显示具有相同名称的多个属性

来自分类Dev

在MVC中处理具有相同名称的多个动作

来自分类Dev

具有相同名称,域和路径的多个Cookie?

来自分类Dev

在Eclipse中导入具有相同名称的多个项目

来自分类Dev

XSD具有相同名称但类型不同的多个元素

来自分类Dev

Scala:具有相同名称的多个隐式转换

来自分类Dev

Spring中具有相同名称的多个字段

来自分类Dev

JSON返回具有相同名称的多个值

来自分类Dev

jQuery填充具有相同名称的多个选择框

Related 相关文章

  1. 1

    获取具有相同名称JAXB的多个XML元素

  2. 2

    从多个表中获取具有相同名称的列

  3. 3

    PHP SimpleXML-具有相同名称的多个子级

  4. 4

    SQL Server XML查询:查询具有相同名称的多个子元素

  5. 5

    具有相同名称的多个参数

  6. 6

    具有相同名称的多个div

  7. 7

    具有相同名称的多个输入

  8. 8

    具有多个具有相同名称的字段的 POST

  9. 9

    为具有相同名称的元素创建XML模式?

  10. 10

    在VIM中收集具有相同名称模式的变量

  11. 11

    如何使用jquery或javascript获取具有相同名称属性的多个文件的值?

  12. 12

    是否可以从多个具有相同名称的元素中获取get_attribute()?

  13. 13

    如何从具有相同名称的多个类的HTML中获取值?

  14. 14

    尝试报废具有相同名称的多个div,但改为获取null

  15. 15

    如何从具有相同名称的多个元素中获取单击元素,数组的不同索引索引

  16. 16

    php具有相同名称的多个下拉菜单无法获取该值

  17. 17

    jQuery:从具有相同名称的多个ID上获取按键上的jQuery Val

  18. 18

    XPath - 如何获取具有相同名称的多个标签的列表

  19. 19

    获取具有相同名称的所有属性

  20. 20

    从具有相同名称的节点获取所有属性

  21. 21

    使用XSLT显示具有相同名称的多个属性

  22. 22

    在MVC中处理具有相同名称的多个动作

  23. 23

    具有相同名称,域和路径的多个Cookie?

  24. 24

    在Eclipse中导入具有相同名称的多个项目

  25. 25

    XSD具有相同名称但类型不同的多个元素

  26. 26

    Scala:具有相同名称的多个隐式转换

  27. 27

    Spring中具有相同名称的多个字段

  28. 28

    JSON返回具有相同名称的多个值

  29. 29

    jQuery填充具有相同名称的多个选择框

热门标签

归档