小编Rad*_*adz的帖子

Perl替换运算符可以匹配数组中的元素吗?

我有这样的数组

my @stopWords = ("and","this",....)
Run Code Online (Sandbox Code Playgroud)

我的文字在这个变量中

my $wholeText = "....and so this is...."
Run Code Online (Sandbox Code Playgroud)

我想匹配标量wholeText中我的stopWords数组的每个元素的每一个出现,并用空格替换它.

一种方法如下:

foreach my $stopW (@stopWords)
{
   $wholeText =~ s/$stopW/ /;
}
Run Code Online (Sandbox Code Playgroud)

这适用于并替换所有停用词的每次出现.我只是想知道,如果有更短的方法.

像这样:

$wholeText =~ s/@stopWords/ /;
Run Code Online (Sandbox Code Playgroud)

以上似乎不起作用.

perl

8
推荐指数
3
解决办法
4805
查看次数

perl获取数组中匹配项的索引

我想在数组中搜索一个元素.我想从这个搜索得到的是我找到匹配的数组的所有索引.

所以,例如我要搜索的单词是:

$myWord = cat

@allMyWords = my whole file with multiple occurrences of cat in random positions in file
Run Code Online (Sandbox Code Playgroud)

因此,如果cat出现在第3,19和110位,我希望这些指数成为它的结果.我想知道是否有一个小而简单的方法来做到这一点.

谢谢!

perl

3
推荐指数
2
解决办法
1万
查看次数

单元测试 Boost 文件系统 create_directories

我想对 boost 文件系统函数 create_directories() 的失败情况进行单元测试,即当 create_directory 失败时。有人可以提供有关如何执行此操作的任何建议吗?另一个要求是代码需要是跨平台的。

c++ unit-testing boost-filesystem

3
推荐指数
1
解决办法
2711
查看次数

如何创建匹配3或3位数字的正则表达式?

我想删除任何3位或3位以下的数字.有人可以帮我一个这样做的正则表达式吗?

目前,我的代码删除了它找到的所有数字.

     # Cleans Numbers
     def cleanNumbers(stringToClean):
       stringToClean = re.sub(r'[0-9]*', r'', stringToClean)

       print 'String after cleaning : %s' %stringToClean

       return stringToClean
Run Code Online (Sandbox Code Playgroud)

数字将被空间包围.我传入函数的示例字符串:

一段时间后Win8客户端上的连接断开.[持久性] 123 1 22 333 4444 554665 645fdgf45 ds3434 457870978934787843 345342kl

我将上述函数调用如下:

# Main function, calls other functions          
def main():

   # Parsing the input query
   searchQuery = open('input.txt', 'r').read()
   print 'Input query : %s' %searchQuery

   # Cleaning the input query
   string = CleanUpText.cleanNumbers(searchQuery)
Run Code Online (Sandbox Code Playgroud)

regex

3
推荐指数
1
解决办法
5513
查看次数

如何让我的Perl正则表达式不使用插值变量中的特殊字符?

可能重复:
当我在Perl的匹配运算符中插入变量时,如何转义元字符?

我使用以下正则表达式$word在更大的字符串中搜索字符串$referenceLine,如下所示:

$wordRefMatchCount =()= $referenceLine =~ /(?=\b$word\b)/g
Run Code Online (Sandbox Code Playgroud)

当我的$word子字符串包含一些(等等时会发生问题.因为它将它作为正则表达式的一部分而不是匹配的字符串,并给出以下错误:

Unmatched ( in regex; marked by <-- HERE in 
m/( <-- HERE ?=\b( darsheel safary\b)/ 
at ./bleu.pl line 119, <REFERENCE> line 1.
Run Code Online (Sandbox Code Playgroud)

可以告诉我一个解决方案吗?我想如果我能够以某种方式让perl理解我们想要在$word不进行评估的情况下寻找整体,那么它可能会成功.

regex perl

2
推荐指数
1
解决办法
7436
查看次数

如何从大文本文件中删除停用词?

我有一个十亿字的语料库,我用标量收集了它.我有一个.regex文件,其中包含我想从我的数据(文本)中消除的所有停用词.

我不知道如何使用这个.regex文件,所以我创建了一个数组并将.regex文件的所有停用词存储在我的停止字数组中.

要删除停用词我做这样的事情:

grep { $scalarText =~ s/\b\Q$_\E\b/ /g } @stopList;
Run Code Online (Sandbox Code Playgroud)

这需要很长时间才能执行.如何在Perl脚本中使用.regex文件来删除停用词?或者有没有更快的方法来删除停用词?

perl stop-words

2
推荐指数
1
解决办法
3004
查看次数

标签 统计

perl ×4

regex ×2

boost-filesystem ×1

c++ ×1

stop-words ×1

unit-testing ×1