当前位置: 首页 > 面试题库 >

如何在preg_split()的结果中包括分割定界符?

周辉
2023-03-14
问题内容

我有一个简单的模式,可以将文本分成句点:

$text = preg_split("/[\.:!\?]+/", $text);

但我想在数组项中包含. :!末尾。

也就是说,现在是为了“ good:news.everyone!”。我有:

array("good", "news", "everyone", "");

但我想要:

array("good:", "news.", "everyone!", "");

问题答案:

干得好:

preg_split('/([^.:!?]+[.:!?]+)/', 'good:news.everyone!', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

工作原理:模式实际上将所有内容都变成了定界符。然后,要将这些定界符包括在数组中,可以使用PREG_SPLIT_DELIM_CAPTURE常量。这将返回一个数组,如:

array (
    0 => '',
    1 => 'good:',
    2 => '',
    3 => 'news.',
    4 => '',
    5 => 'everyone!',
    6 => '',
);

要摆脱空值,请使用PREG_SPLIT_NO_EMPTY。要组合两个或多个这些常量,我们使用按位运算|符。结果:

array (
    0 => 'good:',
    1 => 'news.',
    2 => 'everyone!'
);


 类似资料:
  • 问题内容: 如何用定界符分割字符串,但是如果转义了,则不能分割?例如,我有一个字符串: 定界符为,转义定界符为。此外,我想忽略转义的反斜杠,因此中的仍然是分隔符。 因此,使用上面的字符串,结果应该是: 问题答案: 使用黑魔法: 匹配一个反斜杠,后跟一个字符,将其跳过并匹配您的定界符。

  • 我试图使用PHP将查询结果分解成块,但似乎不知道如何制定查询或循环,将结果分解成四个批次,并用特定的超文本标记语言元素包围这四行。 内容特别是一个摄影作品集,我只是尝试一行一行地显示照片,但我需要的样式要求每一行基本上是一组独立的信息。 这是我到目前为止使用的代码: 不过,我只希望列表中有四张图片。然后是另一个列表中的另外四个。您能帮我重新格式化循环,使其返回四条记录,然后开始另一个列表中以下四条

  • 问题内容: 我知道您可以使用分割字符串。但是我不知道如何用两个定界符分割字符串。 例: 我需要这样的东西: 它的正则表达式是什么? 问题答案: 用这个 :

  • 问题内容: 我有一个包含各种字符串值的列表。我想一看就拆分列表。结果将是一个列表列表(这将是原始列表的子列表),其中仅包含I的一个实例,我可以使用循环执行此操作,但是有没有 更Python的 方法可以实现此目的? 例子= 结果= 这是我尝试过的方法,但实际上并没有达到我想要的效果,因为它将放入应包含的其他列表中: 问题答案: 我会使用发电机: 此打印 该代码接受任何可迭代的代码,并生成一个可迭代的

  • 问题内容: 我想用多个定界符分割一个字符串,但将定界符保留在结果列表中。我认为这是解析任何一种公式的初始步骤都是有用的,而且我怀疑有一个不错的Python解决方案。 有人在这里用Java问了类似的问题。 例如,典型的拆分如下所示: 但是我正在寻找一种添加加号(或保留它)的好方法: 最终,我想对每个运算符和括号进行此操作,因此,如果有一种方法 一劳永逸,那就更好了。 问题答案: 您可以使用Pytho

  • 问题内容: 我有一条LINQ语句,如下所示: 这将失败,因为拆分功能失败,因为LINQ to Entities无法将此查询转换为SQL。 这是有道理的,但是优雅地实现这一目标的等效方法是什么?我想到的唯一方法是在检索到的字符串上手动运行一个循环,然后将其拆分,但我想一次获得它。 问题答案: 您可以用来使选择发生在内存中,而不是EF中。