【发布时间】:2013-08-21 04:32:51
【问题描述】:
我有一段很长的文字$text,它是正常英语句子的集合(例如来自博客的文章)
我有一些保留的字母数组
$reserved=array("L", "N", "C");
例如,我有一个免费字母数组
$free=array("A", "E", "I", "O", "U");
我如何才能找到此文本中所有以$reserved 字母开头的单词的短语,它们的顺序与它们在数组中的顺序相同,但在$free 数组中可能有也可能没有以字母开头的单词.
最终预期的正确结果
- 让我们不要作弊(L、N、C 的顺序与
$reserved数组中的顺序相同,并且 U 存在于 $free 数组中) - 失去了我们的海军和所有指挥官(“L、N 和 C 的顺序与
$reserved数组中的顺序相同,而free数组中的 O、A、O) - 离开挪威冷藏(L、N、C 的顺序与
$reserved数组中的顺序相同,没有包含free数组中字母的单词)
结果不正确
- 让我们不要欺骗我们的邻居(找到了 L、N C,但发现了额外的 N,而
$reserved数组只有 3 个保留字母) - 我们不要欺骗我们的朋友(F 不在
$free或$reserved数组中) - 来看看我的车(L、N、C 的顺序与
$reserved数组中的顺序不同)
我知道我可以一次一个地遍历单词,然后遍历所有必需的字母表和可选的字母表,但我认为这将是一种非常耗时且效率低下的查找单词的方法。我正在寻找更有效的方法来解决它......也许有一些正则表达式魔法或类似的东西。
你们能否给我一些建议,告诉我应该如何解决这个问题?
我知道正则表达式、PHP 和 JS,但如果可以用任何语言提出解决方案,我可以。
【问题讨论】:
-
你试过了吗?就像通过循环逐字逐句地阅读您的文本并检查某些条件?
-
是的,我知道我可以循环遍历单词,然后遍历所有必需的字母和可选字母,但我认为这将是一种非常耗时且效率低下的查找方式出的话。我正在寻找更有效的方法来解决它......也许有一些正则表达式魔法或类似的东西。
-
只使用一个简单的循环。
标签: php regex algorithm search