我有这样的文字:
/**
* @var \guervyl\cbind_attr_testBundle\Entity\Category
*
* @ORM\ManyToOne(targetEntity="guervyl\cbind_attr_testBundle\Entity\Category", inversedBy="song")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
* })
*/
private $category;
/**
* @var \guervyl\cbind_attr_testBundle\Entity\User
*
* @ORM\ManyToOne(targetEntity="guervyl\cbind_attr_testBundle\Entity\User", inversedBy="song")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $user;
我想要编辑该部分:
* @ORM\ManyToOne(targetEntity="guervyl\cbind_attr_testBundle\Entity\Category", inversedBy="song")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
* })
*/
private $category;
我的表达停留在$
:(\*.*@ORM\\ManyToOne\(.*)(\)(?:\s|.)*?private \$)
但是当我尝试选择其余category;
时,当我设置c时我没有匹配(超时):(\*.*@ORM\\ManyToOne\(.*)(\)(?:\s|.)*?private \$c)
我想让正则表达式工作:(\*.*@ORM\\ManyToOne\(.*)(\)(?:\s|.)*?private \$category;)
我的正则表达式出了什么问题?
答案 0 :(得分:2)
您是否正在尝试使用正则表达式从PHP文件中获取注释?不知道你是否意识到,但是PHP包含了解析语言的功能,这些功能可以让你轻松地获取注释(以及代码的其他部分),而不需要任何正则表达式。
您正在寻找的功能是token_get_all()
,您可以获得一些完全符合您要求的示例代码from this answer here on SO。
答案 1 :(得分:1)
匹配模式可以是:
.*ManyToOne(.|\n)*category;
模式意味着:
.* Match anything zero or more times
ManyToOne Literally match "ManyToOne"
(.|\n)* Match anything (including line breaks) zero or more times
category; Literally match "category;"
结果匹配将是:
* @ORM\ManyToOne(targetEntity="guervyl\cbind_attr_testBundle\Entity\Category", inversedBy="song")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
* })
*/
private $category;
小提琴:Live Demo