需要帮助将模式移动到行尾

Need Help to Move a pattern to End Of Line

我一直在 HTML 页面上使用正则表达式将自动 logcat 设置为 sepolicy 代码。

我的问题是我需要将 { .* }; 移到行尾,但我找不到该怎么做。

一些示例:
allow { read }; recovery rctl_dumpstate_props:file
{ read }; 需要转到行尾。

allow { getattr }; recovery rcgroups:file
{ getattr }; 需要转到行尾。

我已经从其他人的其他类似问题中尝试了多个 ReGex 像 ^(.*)( {.*?};)(.*)$ 并替换 但我得到这样的输出(奇怪的方块):

而不是我需要的代码。 我需要它是 PCRE (PHP)。谢谢!

这适用于 Python3 re module,后者使用 Perl 正则表达式语法。

import re
>>> re.sub('^(.*)( {.*?};)(.*)$', r'', 'allow { read }; recovery rctl_dumpstate_props:file')
'allow recovery rctl_dumpstate_props:file { read };'

您可能需要对空格进行调整,但其要点是捕获 3 个组(前缀、花括号之间的文本和后缀;然后交换它们的位置。

我猜你没有正确使用preg_replace。尝试一下:

$texts = ['allow { read }; recovery rctl_dumpstate_props:file',
          'allow { getattr }; recovery rcgroups:file'];
foreach ($texts as $str) {
    echo preg_replace('/^(.+?)( { .+? };)(.+)$/', '', $str),"\n";
}

输出:

allow recovery rctl_dumpstate_props:file { read }; 
allow recovery rcgroups:file { getattr };