我有这样的数组
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)
以上似乎不起作用.
我想在数组中搜索一个元素.我想从这个搜索得到的是我找到匹配的数组的所有索引.
所以,例如我要搜索的单词是:
$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位,我希望这些指数成为它的结果.我想知道是否有一个小而简单的方法来做到这一点.
谢谢!
我想对 boost 文件系统函数 create_directories() 的失败情况进行单元测试,即当 create_directory 失败时。有人可以提供有关如何执行此操作的任何建议吗?另一个要求是代码需要是跨平台的。
我想删除任何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) 我使用以下正则表达式$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文件,其中包含我想从我的数据(文本)中消除的所有停用词.
我不知道如何使用这个.regex文件,所以我创建了一个数组并将.regex文件的所有停用词存储在我的停止字数组中.
要删除停用词我做这样的事情:
grep { $scalarText =~ s/\b\Q$_\E\b/ /g } @stopList;
Run Code Online (Sandbox Code Playgroud)
这需要很长时间才能执行.如何在Perl脚本中使用.regex文件来删除停用词?或者有没有更快的方法来删除停用词?