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+
,或后续值之间的逗号,后跟一些空格:
查找一些非逗号字符。这将一直匹配到一个逗号或行尾([^,]+)
:
之前的文本,以及组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等。。如果只需更换一次。如果没有,可以分两步完成。