0

如果它存在于另一个文本('haystack')中,我想搜索一个文本('needle'),并具有以下两个条件:

  1. 'needle' 的所有字符必须以相同的顺序在 'haystack' 中
  2. 'haystack' 中的 'needle' 的后续字符之间可以有任何和无限的其他字符

例子:

  • abcde 中的 cde --> TRUE
  • ab-c-de 中的 cde --> TRUE
  • cabecd 中的 cde --> FALSE
  • cde 在 cd!a+b5ce --> TRUE
  • edc 中的 cde --> FALSE

此外,'cde' 不是一个常量字符串,而是一个在列表上迭代的变量。

python 或 R 或​​ bash 中的任何优雅解决方案将不胜感激。

4

3 回答 3

1

我可以建议您使用动态生成的正则表达式,如下所示:

/.*c.*d.*e.*/
于 2015-02-13T17:25:26.777 回答
0

正则表达式是你的朋友。 http://en.m.wikipedia.org/wiki/Regular_expression

https://docs.python.org/2/library/re.html

于 2015-02-13T17:14:26.503 回答
0

我在python中得到了解决方案:

re.match('.*'+'.*'.join(list(needle))+'.*',(haystack)) 
于 2016-07-26T05:36:52.077 回答