Php 正则表达式失败
我有以下案文:Php 正则表达式失败,php,regex,Php,Regex,我有以下案文: /** * @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", referencedColumnNa
/**
* @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\$)
但是当我尝试选择rest类别时代码>,当我设置c时,我没有得到匹配(超时):(\*.@ORM\\ManyToOne\(.*)(\)(?:\s|。)*?private\$c)
我希望正则表达式能够工作:(\*.@ORM\\ManyToOne\(.*)(?:\s|。)*?private\$category;)
我的正则表达式有什么问题?匹配模式可能是:
.*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;
小提琴:匹配模式可以是:
.*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;
Fiddle:您试图使用正则表达式从PHP文件中获取注释?不确定您是否知道,但是PHP包含解析语言的函数,它允许您非常轻松地获取注释(以及代码的其他部分),而无需任何正则表达式
您正在寻找的函数是,您可以得到一些示例代码,这些代码完全符合您的要求。您试图使用正则表达式从PHP文件中获取注释?不确定您是否知道,但是PHP包含解析语言的函数,它允许您非常轻松地获取注释(以及代码的其他部分),而无需任何正则表达式
您正在寻找的函数是,您可以得到一些示例代码,这些代码完全符合您的要求。这与php中的正则表达式有关吗?或者php的标记只是因为您正在挖掘的文件是php吗?试试看。@Randall它只是针对正则表达式的。这不是针对特定的编程语言,我看到您删除了PHP标记,所以这不是一个PHP问题。PHP本身提供了一些内置的反射类。另外,由于这些都是条令注释——我相信条令核心有注释解析类——可以作为参考。Regexr regex引擎与regex101 live demo中提供的不同,因此不支持原子组。全球可用的替代方案是将(?:\s |.*)?
更改为[\s\s]*?
。这与php中的正则表达式有关吗?或者php的标记只是因为您正在挖掘的文件是php吗?试试看。@Randall它只是针对正则表达式的。这不是针对特定的编程语言,我看到您删除了PHP标记,所以这不是一个PHP问题。PHP本身提供了一些内置的反射类。另外,由于这些都是条令注释——我相信条令核心有注释解析类——可以作为参考。Regexr regex引擎与regex101 live demo中提供的不同,因此不支持原子组。一个全球可用的替代方案是将(?:\s|。)*?
更改为[\s\s]*?
。它只是选择了它,但我的正则表达式只是替换@ORM\ManyToOne(…)
正则表达式不用于替换字符串,只用于匹配模式。您将使用您的主要编程语言来进行替换。是的,您可以在regex模式中使用捕获组来进行替换。它只是选择了它,但我的regex只是替换@ORM\manytone(…)
regex不用于替换字符串,而只是用于匹配模式。您可以使用您的主要编程语言来进行替换。是的,您可以在正则表达式模式中使用捕获组来进行替换。