正则表达式删除文本(php)中特定条件的匹配
只有当“.U.”或“.U.”位于字符串本身的末尾时,我才需要一种删除字符串的“U”部分的方法(第一种情况下有空格,第二种情况下没有空格)正则表达式删除文本(php)中特定条件的匹配,php,regex,preg-replace,Php,Regex,Preg Replace,只有当“.U.”或“.U.”位于字符串本身的末尾时,我才需要一种删除字符串的“U”部分的方法(第一种情况下有空格,第二种情况下没有空格) 我是阿米斯塔德 我是阿米斯塔德。美国 我是芝加哥大学的粉丝 我是尼克斯队的球迷。芝加哥大学 从这4个字符串中,它应该只应用于1和2。因此,每种情况下产生的文本将是: 我是阿米斯塔德 我是阿米斯塔德 我是芝加哥大学的粉丝 我是尼克斯队的球迷。芝加哥大学 我用str_replace()尝试了几种替代方法,但由于上面提到的条件,这必须用regex来完成。有什么想法吗
我用str_replace()尝试了几种替代方法,但由于上面提到的条件,这必须用regex来完成。有什么想法吗?谢谢 使用
$
将正则表达式锚定到字符串的末尾。\s?
查找可能的空间
$new_string = preg_replace("/\s?U\.$/", "", $string);
$string = "Que tiene amistad. U.";
$new_string = preg_replace("/\s?U\.$/", "", $string);
echo $new_string;
// Que tiene amistad.
$string = "Im fan of U. of Chicago.";
$new_string = preg_replace("/\s?U\.$/", "", $string);
echo $new_string;
// Im fan of U. of Chicago.
我经常这样回答,但a可能在这里起作用:
= preg_replace("/(?<=\. |\.)U\.$/", "", $str);
=preg\U replace(“/”(看看函数preg\U replace()
:这个答案应该很全面。但是,由于您特别要求U前面的点,我建议将命令更改为preg\U replace(“/。\s?U\.$/”,“,$string))
@Thilo如果查看OP所需的输出,则U
之前的最后一个
仍然存在,因此没有被regexp替换。是的,它是。但是,您的表达式也会改变“This is a dummyU”。"。这就是为什么我用圆点替换了整个找到的字符串,但没有删除它。@Thilo用这个字符串尝试正则表达式:“Hola amigos U.”problem@andufo当然。这个借口可能站不住脚,但在第一个点前面应该有一个反斜杠……然而,我的解决方案仍然会删除。和U之间的空格(如果有)-除marios之外的其他解决方案也是如此。为此,增加1。