作者:捕鱼达人2502873933 | 来源:互联网 | 2022-11-24 05:34
您好,我正在尝试制作一个崇高的文本片段,我想将一个camelCase单词转换为snake_case.我知道有插件允许你将字符串转换为snake_case但我想通过崇高的文本片段来实现.
我有一个如下所示的片段.
belongsToMany('App\\${1/^((.+)ies)|(.+[^s])s$/\u(?1$2y:$3)/}', '${TM_FILEPATH/^.+\/(\w+)\.php$/\l${1}/}_$1', '${TM_FILEPATH/^.+\/(\w+)\.php$/\l${1}/}_id', '${1/^((.+)ies)|(.+[^s])s$/\l(?1$2y:$3)/}_id');
}
]]>
btm
source.php
Eloquent belongsToMany() (pivot) relation
作为输出它给了我.
/**
* UserMessages belongs to many (many-to-many) Role.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function roles()
{
return $this->belongsToMany('App\Role', 'userMessages_roles', 'userMessages_id', 'role_id');
}
我最终想要的是userMessages是user_messages.知道怎么做到这一点.
非常感谢.
1> OdatNurd..:
下面是基于您的示例执行此类操作的代码段示例,但为了清晰起见缩短了(我也将范围更改为embedding.php
使用我用于PHP的语法触发).您应该能够在更大的代码段示例中根据您的需求进行调整.
btm
embedding.php
Eloquent belongsToMany() (pivot) relation
可以在非官方文档的片段页面中看到此基础.代码段中变量的扩展采用了这种形式.正则表达式使用boost库正则表达式和格式字符串.${variable/regex/format_string/options}
Boost支持条件替换的形式(?Ntrue:false)
,对于捕获组N
,替换文本是true
匹配捕获的东西,或者false
如果没有.
这里我们使用正则表达式中的替换来拥有两个捕获组,以便我们可以提供两个不同的替换,具体取决于哪些项匹配.第一个捕获组捕获一个前导大写字符并将其转换为小写字母,而第二个捕获组(不锚定到行的开头)执行相同操作,并且在匹配之前也使用下划线.