regex - Perl - 从字符串中捕获特定数量的单词

标签 regex perl

我在 perl 变量中有一个很长的字符串,它有 500 多个单词。

$mytext = "This text goes on and on and on........";

基本上,这个冗长的字符串可以包含任何东西,包括各种特殊字符。它可以包括特殊字符(例如撇号 - 它是 cleo 业务的一个部门)、数字(例如 - 于 2001 年 8 月 2 日成立)、逗号、分号和撇号(例如 - 通过其不同部门的业务收入)、特殊字符(像'&',单引号和双引号)

我的要求是从字符串的开头提取特定数量的单词(不是字符)。例如,我可能需要选择前 200 个单词。
我知道有一个内置 substr功能:
substr($mytext, $start, $length)

但它提取了字符数。
我怎样才能提取字数呢?

最佳答案

你可以用 the split function 来做到这一点:

  • 它接受一个正则表达式:这里 \W+每次遇到非单词字符(或此类字符的序列)时都会拆分字符串
  • 它提供了一个选项来限制字符串被切割的次数(这有效地控制了输出中的最大部分数)。

  • 代码 :
    my $mytext = "This text goes on and on and on........";
    my $nb_words = 20;
    my @words = split(/\W+/, $mytext, $nb_words + 1);
    pop @words; # the last item contains the remaining of the string
    

    关于regex - Perl - 从字符串中捕获特定数量的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53934439/

    相关文章:

    java - 为什么 (.*)* 进行两个匹配并且在 $1 组中没有选择任何内容?

    php - 使用 Codeigniter 从 PHP 执行 perl 脚本

    Perl - 如何使用元素数组作为键创建动态多级哈希

    perl - 单个键的哈希中的多个值

    java - 正则表达式 for/someChars1@someChars2BOT

    java - 如何以用户友好的方式过滤错误消息,而无需在 Android 中创建自定义字符串?

    python - Python 中的搜索/匹配正则表达式

    perl - Dancer 与 Catalyst [Perl Web 框架]

    perl - 如何在 perl 中调用 unix

    asp.net - "Characters Numbers"的正则表达式