r******r 发帖数: 700 | 1 有点像 regular expression 匹配,但更复杂一些。
给定字符串 Pattern 和待匹配的字符串 S1 & S2:
P = "ABC[l, m] * XYZ[n]"
S1 = "abc ABC[l, z] AB[x] XYZ[n]"
S2 = "abc ABC[m, l] AB[x] XYZ[n]"
其中括号中的 l, m, n, x 分别为其字符的属性。 比如,ABC[l,z] 表示字符串 “ABC
” 具有属性 "l" & "z".
其中,match 的条件为:
1)主字符匹配,比如, "ABC" 必须匹配 “ABC”
2)如果主字符匹配,其属性必须匹配,比如 [l, m] 可以匹配 [m, l],属性的所列顺
序无关。
所以,上面的 P math S2, 但是不 match S1. 如果 match succeed, 打印出所 match
的部分。上面的例子中,应打印出 "ABC[m, l] AB[x] XYZ[n]".
其中的星号 “*”, 表示“一个或多个字符”。
如果去掉其属性匹配部分,就成了一个字符串匹配的问题。请问,这类问题,有什么常
见的解法吗? | m**q 发帖数: 189 | 2 因为属性的所列顺序不影响匹配结果,把pattern和带匹配字符串
中的每个属性中的字符排序,转换成普通的字符串匹配 |
|