模式符号的字符集

时间:2011-09-22 17:45:09

标签: java design-patterns

有没有办法获得模式符号集?

例如,我有一个正则表达式[az]+[A-Z]*。然后,第一个符号的符号集是az。然后第二个符号的符号集是az。然后第三个符号的符号集是az。 ....

任务是:我有一个模式和一个字符串。现在我想知道字符串是否以与匹配模式的字符串相同的字符开头。

更新

例如,我有一个正则表达式[az]\\:[A-Z]*。然后,第一个符号的符号集是az。然后第二个符号的符号集是:。然后第三个符号的符号集是A-Z。然后第四个符号的符号集是A-Z。 ....

1 个答案:

答案 0 :(得分:0)

听起来你要求的是一个将正则表达式作为参数的函数,并返回一组字符,这些字符可以在给定的偏移处匹配到要匹配的字符串中:

Set<Character> getSymbols(String regEx, int offset);

这不重要。

使用您的示例:

getSymbols("[az]\\:[A-Z]*", 1)

应该返回['a','z'],

getSymbols("[az]\\:[A-Z]*", 2)

应该返回[':'],

getSymbols("[az]\\:[A-Z]*", 3)

应该返回['A','B','C',.....'Y','Z']

但这是一个微不足道的输入。如果输入是:

,该怎么办?
getSymbols("[abc]*FRED[xzy]*", 5)

现在你必须考虑到这样一个事实:任何数量的“abc”字符都可以进行FRED,并且会转移其他所有内容,从而产生如下结果集:

1: ['a', 'b', 'c', 'F']
2: ['a', 'b', 'c', 'F', 'R']
3: ['a', 'b', 'c', 'F', 'R', 'E']
4: ['a', 'b', 'c', 'F', 'R', 'E', 'D']
5: ['a', 'b', 'c', 'x', 'y', 'z', 'F', 'R', 'E', 'D']

解决这个问题的代码必须解析正则表达式,它对所有转义字符都有很强的表达能力(\ w用于空格等等),然后需要一个递归算法来构建输出集。

如果这是你想要的,下一个问题是,“你真正试图解决什么问题?”