在IT技术中,如何将字符串在问号、感叹号或句号处分割?

4

我正在尝试使用preg_split在问号、感叹号或句号处将字符串拆分,但是我遇到了一个问题。它并没有在问号处拆分,而是提前拆分了整个字符串。请看一下我的代码:

<?php

    $input = "Why will I have no money? Because I spent it all";
    $input = preg_split( "/ (?|.|!) /", $input ); 
    $input = $input[0];
    echo $input;

?>

预期结果:

为什么我会没有钱

实际结果:

为什么会


"? "和"."是正则表达式中的特殊字符,因此需要转义为"/(\\?|\\.|!)/" - mmm
@mmm 我刚刚转义了问号和句号。现在它返回整个字符串。 - jessica
你的模式是 [空格][字符][空格] - Scuzzy
2
使用字符类 - "/[?.!]/" - 可以使这个过程更简单,因为这些字符在上下文中都没有特殊的含义。 - user2864740
1个回答

6

您需要转义特殊的正则表达式字符(.?),并移除空格。

<?php
$input = "Why will I have no money? Because I spent it all";
    $input = preg_split( "/(\?|\.|!)/", $input ); 
print_r($input);

演示:https://eval.in/422337 输出:
Array
(
    [0] => Why will I have no money
    [1] =>  Because I spent it all
)

Regex101 demo: https://regex101.com/r/zK7cK7/1


我想今天这是你第二次正确回答我的问题了!干得好,Chris!你正在获得成功!xD - jessica
这是我为你的第一个回答(...我想是吧?)今天我编辑了你之前提出问题的未格式化的答案。 - chris85
哦。今天早些时候我好像看到过你的名字。 - jessica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接