繁体   English   中英

简单的preg_replace + RegEx存在的问题

[英]Problems with simple preg_replace + RegEx

请原谅我是RegEx的新手,并且以前从未真正使用过preg_replace。

我正在尝试获取一个字符串,并将任何出现的“(username)said ::”替换为“ @(username)\\ n”。 由于用户名只能包含空格,字母和数字,因此我使用了[A-Za-z0-9 \\ s]。 但是,它不起作用,我知道我做错了什么:

$message = preg_replace("/([A-Za-z0-9\\s]*) said:", "@$0\\n", $message);

这是使用preg_replace的正确方法,还是我应该采用其他方法?

$ message ='有人说:';

$ message = preg_replace(“ /(。*)\\ ssaid:/ Ui”,“ REPLACE said:”,$ message); 回显$ message;

您非常接近答案。 主要问题是缺少结束定界符 (/)。 以下是我建议的正则表达式:

<?php
$string = '(username) said:';
$string = preg_replace('#(\([A-Za-z0-9\s]+\)) said:#',"@$1\n", $string);
echo $string;
?>

我还使用+而不是*,因为加号意味着字符需要发生一次或多次(而不是0次或多次)。 $ 0将匹配整个搜索模式(包括所说的单词),但您只想匹配括号中的一组用户名,因此我使用了$ 1。 我也用\\(\\)来避开括号,因为您的示例在括号中有用户名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM