Regex 用双重置换吞没文本

Regex 用双重置换吞没文本,regex,Regex,我有以下案文: Budget Cube Options: Read Only, Read/Write, Admin 我想将其转换为: 'Budget Cube Options'= @('Read Only','Read/Write', 'Admin') 在PHP中,您可以使用以下正则表达式实现所需: (?:^([^:]*)|\K)[:,]\s+([^,]+) (?:^([^::]*)|\K)查找行的开头,后跟一些非:字符,或上一个匹配的结尾(\K) [:,]\s+查找第一个文本之间的:,

我有以下案文:

Budget Cube Options: Read Only, Read/Write, Admin
我想将其转换为:

'Budget Cube Options'= @('Read Only','Read/Write', 'Admin')

在PHP中,您可以使用以下正则表达式实现所需:

(?:^([^:]*)|\K)[:,]\s+([^,]+)
  • (?:^([^::]*)|\K)
    查找行的开头,后跟一些非
    字符,或上一个匹配的结尾(
    \K
  • [:,]\s+
    查找第一个文本之间的
    ,或后续值之间的逗号,后跟一些空格
  • ([^,]+)
    查找一些非逗号字符。这将一直匹配到一个逗号或行尾
正则表达式捕获组1中
之前的文本,以及组2中
之后的值。您可以这样使用它:

$string = 'Budget Cube Options: Read Only, Read/Write, Admin';
preg_match_all('/(?:^([^:]*+)|\K)[:,]\s+([^,]+)/', $string, $matches);
echo "'{$matches[1][0]}'= @('" . implode("','", $matches[2]) . "')";
输出:

'Budget Cube Options'= @('Read Only','Read/Write','Admin')

Regex

对于这部分
@(“只读”、“读/写”、“管理”)
您需要
\G
锚和支持它的引擎、PCRE、Php、Perl等。。如果只需更换一次。如果没有,可以分两步完成。