如何有效地确定给定字符串是否包含两个字符串?
例如,假设我得到了字符串:abc-def-jk-l。该字符串要么包含由 a 分割的两个字符串-,要么不匹配。匹配的可能性是:
Possible Matches for "abc-def-jk-l" :
abc           def-jk-l
abc-def       jk-l
abc-def-jk    l
现在,这是我要匹配的字符串列:
Column I       Column II
-------        -------
1. abc-def     A. qwe-rt
2. ghijkl      B. yui-op
3. mn-op-qr    C. as-df-gh
4. stuvw       D. jk-l
如何有效地检查给定字符串是否与上列中的两个字符串匹配?(上面是匹配 - 匹配abc-def和jk-l)
以下是更多示例:
abc-def-yui-op   [MATCH - Matches 1-B]
abc-def-zxc-v    [NO MATCH - Matches 1, but not any in column II.]
stuvw-jk-l       [MATCH - Matches 4-D]
mn-op-qr-jk-l    [Is this a match?]
现在,给定上面的字符串,我怎样才能有效地确定匹配?(效率将是关键,因为列 i 和 ii 将在其受尊重的表中的索引列上各有数百万行!)
UPDATE:顺序将始终是第 i 列,然后是第 ii 列。(或“不匹配”,这可能意味着它只匹配一列或不匹配)
这里有一些 php 来帮助:
<?php
$arrStrings = array('abc-def-yui-op','abc-def-zxc-v','stuvw-jk-l','stuvw-jk-l');
foreach($arrStrings as $string) {
    print_r(stringMatchCheck($string));
}
function stringMatchCheck($string) {
   $arrI = array('abc-def','ghijkl','mn-op-qr','stuvw');
   $arrII = array('qwe-rt','yui-op','as-df-gh','jk-l');
   // magic stackoverflow help goes here!
    if ()
        return array($match[0],$match[1]);
    else
        return false;
}
?>