php字符串
$str = <<<EEE
good work
nice work
great work
cool work
EEE;
想通过正则替换
目标1, 将cool work 之外的其它 good work, nice work, great work 替换成 tired,正则怎么写
目标2, 将cool work 之外的其它 good work, nice work, great work 中的good, nice, great替换成 no, 正则怎么写~~
说明: 除了罗列的good work,nice work,great work, 可能还有很多, 仅排除 cool work即可
求大神指点
/^\w+(?<!cool) work$/gm
/^\w+(?=((?<!cool) work))/gm
cool work
之外的其它 good work
, nice work
, great work
替换成 tired
对于这个目标,我们可以使用正则表达式来匹配除了 cool work
以外的包含 work
的行,并将它们替换为 tired
。这里我们使用 PHP 的 preg_replace
函数,但需要注意的是,由于 PHP 的正则表达式默认不支持多行模式(除非使用了 s
修饰符),我们可能需要使用 preg_replace_callback
函数结合一些逻辑来处理。
但是,为了简化问题,我们可以假设每一行都是独立的,并且不包含 cool work
之外的 work
子串(即每行只包含一个完整的短语,如 good work
)。在这种情况下,我们可以使用以下正则表达式:
^(?!cool work$).*work$
但是,由于 PHP 的 preg_replace
不直接支持否定前瞻((?!...)
),我们将使用 preg_replace_callback
来实现这个逻辑:
$str = <<<EEE
good work
nice work
great work
cool work
EEE;
$str = preg_replace_callback(
'/^(good|nice|great) work$/m',
function ($matches) {
return $matches[0] === 'cool work' ? $matches[0] : 'tired';
},
$str
);
echo $str;
这将输出:
tired
tired
tired
cool work
cool work
之外的其它 good work
, nice work
, great work
中的 good
, nice
, great
替换成 no
对于这个目标,我们可以使用与目标1类似的方法,但这次我们只替换行首的 good
、nice
、great
,而保留 work
。我们可以使用以下正则表达式:
^(good|nice|great)\s+work$
并结合 preg_replace_callback
来实现替换:
$str = <<<EEE
good work
nice work
great work
cool work
EEE;
$str = preg_replace_callback(
'/^(good|nice|great)\s+work$/m',
function ($matches) {
return $matches[0] === 'cool work' ? $matches[0] : 'no work';
},
$str
);
// 如果只想替换 "good", "nice", "great" 而不替换 "work"
$str = preg_replace(
'/^(good|nice|great)(?=\s+work$)/m',
'no',
$str
);
echo $str;
注意,上面的第二个 preg_replace
示例使用了正向后视((?=...)
)来确保只有后面跟着 work
的 good
、nice
、great
被替换。这将输出:
no work
no work
no work
cool work
正则获取指定字符到下一个大写字符之间的内容
我确定正则本身是没问题的,因为别的文本都正常去掉了标签,但就这个文本(我省略了很多)去不掉标签 我怀疑字符串中的 < 和 > 不对,但是不知道啥问题啊
上述代码可以给每4个数字加一个逗号,但是这正则该怎么理解呢? 因为我的理解结果是1234,5678,9 但实际正则在替换时,似乎是从右向左每4个判断一次,让我很疑惑
问题内容: 这是代码: 输出是然后 为什么是第一个输出而不是? 问题答案: 它在第一个示例中进行整数除法,因为这是数字文字的默认类型。尝试将其更改为(或-d后缀表示a ),您应该得到相同的答案。
我设法安装了pip,但当我使用pip安装下载的车轮时,它会显示: 该文件与PIP位于同一文件夹(脚本)中。
失败:生成失败,出现异常。 > 其中:Script“C:\flutter\packages\flutter_tools\gradle\flutter.gradle”行:900 错误:任务“:app:CompileFlutterBuildDebug”执行失败。 进程“command”C:\flutter\bin\flutter.bat“已完成,退出值为非零%1 生成在%12s中失败异常:Gradle