从知道单词中一个字符索引的字符串中提取单词 (python)

Extraction of the word from string knowing the index of the one character inside the word (python)

如果用户提供不同格式的号码(订单,分隔符)

match_main returns 一个 index,例如如果模式是 20170630/4072/00 和可能的发票列表numbers 是一个字符串 20180923-5032-02 2016-6872-01 20170630-4072-00 20170620-4072-00 20091204-7914-00(因此发票编号以 space 作为分隔符)它将 return 30(第一个字符的索引 'correct' 数字是 20170630-4072-00 我知道如何自动提取该数字(我知道数字的第一个字符的索引并且我知道它在下一个之前结束space) 但如果用户提供发票编号但顺序不同 (4072-00-20170630) 它将 return 39 并且在 [= 中间31=] 数字,在这种情况下,我不知道如何提取该数字(我知道数字内某处字符的索引,并且该数字在最后一个 space 之后开始并在下一个 [=35 之前结束=])

如果我对你的问题的理解正确,那么你需要做的是找到由 match_main 编辑的 return 字符左侧的最后一个分隔符,以及右侧的第一个分隔符那个角色。如果是这样,这样的事情应该有效:

about_here = match_main(mystery_text, invoice, 0)
left_sep = mystery_text.rfind(' ', 0, about_here) + 1
right_sep = mystery_text.find(' ', about_here)
my_invoice = mystery_text[left_sep:right_sep]

这假定您的分隔符始终是 space。您还需要检查边界条件:如果您的发票位于字符串的开头或结尾,rfindfind 将 return -1。这大概就是您要找的东西吗?

顺便说一句,Sergio 建议先拆分字符串,然后再进行匹配。他是对的,但我假设您正在处理一个非常长的输入字符串(因为您使用的是 dif-match-patch)并且不想创建一个大数组来查找您的数字。