PHP:如何从指定的索引中提取子字符串,直到下一个空格或行尾

约书亚洪水

我有一个输入字符串:

$subject = "This punctuation! And this one. Does n't space that one."

我也有一个数组,其中包含我要执行的替换的异常,当前只有一个成员:

$exceptions = array(
  0 => "n't"
);

我想实现的复杂解决方案的原因是,此阵列将来会扩展,并可能包含数百个成员。

我想在单词边界处插入空格(重复的空格将在以后删除)。但是,应忽略某些边界。例如,上述句子中的感叹号和句号应包含空格,但撇号不应包含空格。一旦从的最终结果中删除了重复的空格trim(preg_replace('/\s+/', ' ', $subject));,它应该看起来像这样:

"This punctuation ! And this one . Does n't space that one ."

我正在研究以下解决方案:

  1. 使用preg_match('\b', $subject, $offsets, 'PREG_OFFSET_CAPTURE');收集这里的空白可以插入索引数组。

  2. 遍历$offsets数组。

  • $subject在当前偏移量之前从空白处拆分,直到下一个空白处或行尾。
  • 检查拆分结果是否包含在$exceptions数组中。
  • 如果split的结果不包含在exceptions数组中,则在当前偏移处插入空格字符。

到目前为止,我有以下代码:

$subject="This punctuation! And this one. Does n't space that one.";
$pattern = '/\b/';
preg_match($pattern, $subject, $offsets, PREG_OFFSET_CAPTURE );

if(COUNT($offsets)) {
  $indexes = array();
  for($i=0;$i<COUNT($offsets);$i++) {
    $offsets[$i];
    $substring = '?';

    // Replace $substring with substring from after whitespace prior to $offsets[$i] until next whitespace...

    if(!array_search($substring, $exceptions)) {
      $indexes[] = $offsets[$i];
    }
  }

  // Insert whitespace character at each offset stored in $indexes...

}

我找不到合适的方法来创建$substring变量以完成上述示例。

$res = preg_replace("/(?:n't|ALL EXCEPTIONS PIPE SEPARATED)(*SKIP)(*F)|(?!^)(?<!\h)\b(?!\h)/", " ", $subject);
echo $res;

输出:

This punctuation ! And this one . Doesn't space that one .

演示与说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

提取以特定字符开头的子字符串,直到下一个空格

来自分类Dev

Python 从字符串中提取值并移至下一个

来自分类Dev

如何匹配字符串和下一个空格之间的所有内容

来自分类Dev

如何匹配字符串和下一个空格之间的所有内容

来自分类Dev

是否可以将字符串子字符串化为字符串中的下一个空格?

来自分类Dev

切片字符串直到下一个字符

来自分类Dev

获取php字符串中的下一个立即数子字符串

来自分类Dev

字符串匹配时如何在行尾获取下一个字符串

来自分类Dev

如何计算字符串匹配后的行数,直到发生下一个especific匹配

来自分类Dev

如何在正斜杠(直到下一个正斜杠或字符串末尾)之后获取文本?

来自分类Dev

如何使用 sed 命令从匹配的字符串中删除行直到下一个匹配

来自分类Dev

如何从URL中提取一个子字符串?

来自分类Dev

在字符串python中找到句子时如何提取下一个单词

来自分类Dev

Intellij:删除所有空格直到下一个非空格字符

来自分类Dev

查找以':'开头的子字符串,直到':'字符后的第一个空格

来自分类Dev

在字符串数组中查找下一个匹配项的索引和值

来自分类Dev

从字符串中提取子字符串的最后一个实例

来自分类Dev

宏从星期几的日期范围字符串中提取日期,并添加7天以打印下一个日期范围

来自分类Dev

While循环不会输出子字符串的下一个实例

来自分类Dev

从开始到下一个逗号的子字符串Report Builder

来自分类Dev

While循环不会输出子字符串的下一个实例

来自分类Dev

正则表达式匹配字符串中的任何字符,直到下一个匹配为止

来自分类Dev

与另一个字符串比较时,如何从Python字符串中提取唯一子字符串?

来自分类Dev

获取一个字符串并将其放在行的开头,直到找到下一个字符串

来自分类Dev

如何用下一个替换字符串中的字符?

来自分类Dev

将LeftBracket之后的所有内容解释为字符串,直到下一个RightBracket

来自分类Dev

正则表达式返回匹配项加上字符串直到下一个匹配项

来自分类Dev

bash 查找带有整数的行,直到下一个字符串

来自分类Dev

从字符串中删除一个单词,直到下一次出现空格

Related 相关文章

  1. 1

    提取以特定字符开头的子字符串,直到下一个空格

  2. 2

    Python 从字符串中提取值并移至下一个

  3. 3

    如何匹配字符串和下一个空格之间的所有内容

  4. 4

    如何匹配字符串和下一个空格之间的所有内容

  5. 5

    是否可以将字符串子字符串化为字符串中的下一个空格?

  6. 6

    切片字符串直到下一个字符

  7. 7

    获取php字符串中的下一个立即数子字符串

  8. 8

    字符串匹配时如何在行尾获取下一个字符串

  9. 9

    如何计算字符串匹配后的行数,直到发生下一个especific匹配

  10. 10

    如何在正斜杠(直到下一个正斜杠或字符串末尾)之后获取文本?

  11. 11

    如何使用 sed 命令从匹配的字符串中删除行直到下一个匹配

  12. 12

    如何从URL中提取一个子字符串?

  13. 13

    在字符串python中找到句子时如何提取下一个单词

  14. 14

    Intellij:删除所有空格直到下一个非空格字符

  15. 15

    查找以':'开头的子字符串,直到':'字符后的第一个空格

  16. 16

    在字符串数组中查找下一个匹配项的索引和值

  17. 17

    从字符串中提取子字符串的最后一个实例

  18. 18

    宏从星期几的日期范围字符串中提取日期,并添加7天以打印下一个日期范围

  19. 19

    While循环不会输出子字符串的下一个实例

  20. 20

    从开始到下一个逗号的子字符串Report Builder

  21. 21

    While循环不会输出子字符串的下一个实例

  22. 22

    正则表达式匹配字符串中的任何字符,直到下一个匹配为止

  23. 23

    与另一个字符串比较时,如何从Python字符串中提取唯一子字符串?

  24. 24

    获取一个字符串并将其放在行的开头,直到找到下一个字符串

  25. 25

    如何用下一个替换字符串中的字符?

  26. 26

    将LeftBracket之后的所有内容解释为字符串,直到下一个RightBracket

  27. 27

    正则表达式返回匹配项加上字符串直到下一个匹配项

  28. 28

    bash 查找带有整数的行,直到下一个字符串

  29. 29

    从字符串中删除一个单词,直到下一次出现空格

热门标签

归档