gpt4 book ai didi

python - 在正则表达式字符串搜索后查找标记(单词)索引的有效方法

转载 作者:行者123 更新时间:2023-11-28 17:53:08 24 4
gpt4 key购买 nike

我需要在另一个字符串 y 中执行一个字符串 x 的正则表达式搜索,但是我需要知道在使用其他一些正则标记化(拆分)字符串 y 之后命中的第一个字符的标记(单词)索引表达式(例如空格)。第一个正则表达式可能会找到一个子串,所以我不能保证它会停在标记(单词)的开头。

实现这个的最佳算法是什么。一个简单的方法如下:

  1. 使用第一个正则表达式在y中搜索x,得到字符偏移量z
  2. 使用第二个正则表达式将 y 拆分为一个元素数组
  3. 遍历元素数组,将每个项目的长度添加到变量 LENGTH,并将计数器 COUNTER 加 1
  4. 当LENGTH大于或等于z时停止循环
  5. 命中第一个字符的token索引就是COUNTER的值

(这里假设split函数将拆分字符(如空格)存储为数组元素,这是非常浪费的。

一个具体(简单)的例子:假设我想知道在字符串“The moon is made of cheese”中搜索“ade”的标记(单词)索引。该函数应该返回答案:3(对于零索引数组)。

==编辑==
当正则表达式搜索跨越标记边界时,该算法也需要工作。例如,在“The moon is made of cheese”中搜索“de of ch”时,它应该再次返回索引“3”。

最佳答案

根据您的更新:

#!/usr/bin/perl -l
use strict;
use warnings;

my $string = "The moon is made of cheese";
my $search = 'de of ch';
my $pos = index($string, $search);
if ($pos != -1) {
my $substr = substr($string, 0, $pos);
my @words = split /\s+/, $substr;
print "found in word #", $#words, "\n";
} else {
print "not found\n";
}

输出:

found in word #3

关于python - 在正则表达式字符串搜索后查找标记(单词)索引的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6056236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com