Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在句子中查找一系列单词(字符串)的位置_Regex_String_Text_Nlp_Tokenize - Fatal编程技术网

Regex 在句子中查找一系列单词(字符串)的位置

Regex 在句子中查找一系列单词(字符串)的位置,regex,string,text,nlp,tokenize,Regex,String,Text,Nlp,Tokenize,我有一个带有两个标记的句子和。我需要这两个标记之间单词序列位置的索引。请注意,将统计、和其他可能的字符 sent="Hi please help me to <e1>solve, this problem please</e1> Thank you." 我尝试了以下两种解决方案: 解决方案1: sent=“你好,请帮我解决这个问题,谢谢。” E1=重新搜索(“(.*”,已发送)。组(1) 已发送=已发送。替换(“”,“”) 已发送=已发送。替换(“”

我有一个带有两个标记的句子
。我需要这两个标记之间单词序列位置的索引。请注意,将统计、和其他可能的字符

sent="Hi please help me to <e1>solve, this problem please</e1> Thank you."
我尝试了以下两种解决方案:

解决方案1:

sent=“你好,请帮我解决这个问题,谢谢。”
E1=重新搜索(“(.*”,已发送)。组(1)
已发送=已发送。替换(“”,“”)
已发送=已发送。替换(“”,“”)
sent=word\u标记化(sent)
E1_indx=[]
E1_lis=单词标记化(E1)
打印(E1_-lis)
对于E1_lis中的项目:
E1_indx.append(已发送索引(项))
打印(E1_indx)
但结果是:

[5,6,7,8,1]

解决方案2:

sent="Hi please help me to <e1>solve, this problem please</e1> Thank you."

e1_st = re.findall(r'<e1>\w+', sent)
e1_end = re.findall(r'\w+</e1>', sent)

e1_st=(''.join(str(x) for x in e1_st))
e1_end=(''.join(str(x) for x in e1_end))

e1_st = e1_st.replace('<e1>', '')
e1_end = e1_end.replace('</e1>', '')

sent = sent.replace('<e1>', '')
sent = sent.replace('</e1>', '')

sent = word_tokenize(sent)

print(list(range(sent.index(e1_st), sent.index(e1_end)+1)))
sent=“你好,请帮我解决这个问题,谢谢。”
e1_st=re.findall(r'\w+',已发送)
e1_end=re.findall(r'\w+',已发送)
e1_st=(''.join(str(x)表示e1_st中的x))
e1_-end=(“”.join(str(x)表示e1_-end中的x))
e1_st=e1_st.替换('','')
e1_端=e1_端。替换(“”,“”)
已发送=已发送。替换(“”,“”)
已发送=已发送。替换(“”,“”)
sent=word\u标记化(sent)
打印(列表(范围(sent.index(e1_st)、sent.index(e1_end)+1))
输出:

[]

当前面有一个重复的顺序词(这里是“请”)时,问题就出现了

有什么简单的解决办法吗?

看起来像是一个问题

如果按以下方式计算偏移并删除标记,则应获得预期结果

sub_b = sent.find('<e1>')
sent = sent.replace('<e1>')
sub_e = sent.find('</e1>')
sent = sent.replace('</e1>')
sub_b=sent.find(“”)
已发送=已发送。替换(“”)
sub_e=已发送。查找(“”)
已发送=已发送。替换(“”)

你好!“单词序列的位置”是什么意思?嗨,我在问题中添加了更多信息!
sent="Hi please help me to <e1>solve, this problem please</e1> Thank you."

e1_st = re.findall(r'<e1>\w+', sent)
e1_end = re.findall(r'\w+</e1>', sent)

e1_st=(''.join(str(x) for x in e1_st))
e1_end=(''.join(str(x) for x in e1_end))

e1_st = e1_st.replace('<e1>', '')
e1_end = e1_end.replace('</e1>', '')

sent = sent.replace('<e1>', '')
sent = sent.replace('</e1>', '')

sent = word_tokenize(sent)

print(list(range(sent.index(e1_st), sent.index(e1_end)+1)))
sub_b = sent.find('<e1>')
sent = sent.replace('<e1>')
sub_e = sent.find('</e1>')
sent = sent.replace('</e1>')