在另一个文本中搜索具有相同顺序字符的文本
search a text in another text with the characters in the same order
我想搜索一个文本 ('needle'),如果它存在于另一个文本 ('haystack') 中,并且满足以下两个条件:
- 'needle' 的所有字符必须在 'haystack' 中以 相同的顺序
- 'haystack'
中 'needle' 的后续字符之间可以有任意且不受限制的其他字符
示例:
- cde in abcde --> 真
- cde 在 ab-c-de 中 --> 正确
- cabecd 中的 cde --> FALSE
- cde in c-d!a+b5ce --> 真
- edc 中的 cde --> 错误
此外 'cde' 不是一个常量字符串,而是一个遍历列表的变量。
任何 python 或 R 或 bash 中的优雅解决方案将不胜感激。
正则表达式是你的朋友。
http://en.m.wikipedia.org/wiki/Regular_expression
我可以建议您使用动态生成的正则表达式,如下所示:
/.*c.*d.*e.*/
我在 python 中得到了解决方案:
re.match('.*'+'.*'.join(list(needle))+'.*',(haystack))
我想搜索一个文本 ('needle'),如果它存在于另一个文本 ('haystack') 中,并且满足以下两个条件:
- 'needle' 的所有字符必须在 'haystack' 中以 相同的顺序
- 'haystack' 中 'needle' 的后续字符之间可以有任意且不受限制的其他字符
示例:
- cde in abcde --> 真
- cde 在 ab-c-de 中 --> 正确
- cabecd 中的 cde --> FALSE
- cde in c-d!a+b5ce --> 真
- edc 中的 cde --> 错误
此外 'cde' 不是一个常量字符串,而是一个遍历列表的变量。
任何 python 或 R 或 bash 中的优雅解决方案将不胜感激。
正则表达式是你的朋友。 http://en.m.wikipedia.org/wiki/Regular_expression
我可以建议您使用动态生成的正则表达式,如下所示:
/.*c.*d.*e.*/
我在 python 中得到了解决方案:
re.match('.*'+'.*'.join(list(needle))+'.*',(haystack))