有没有办法获得模式符号集?
例如,我有一个正则表达式[az]+[A-Z]*
。然后,第一个符号的符号集是a
和z
。然后第二个符号的符号集是a
和z
。然后第三个符号的符号集是a
和z
。 ....
任务是:我有一个模式和一个字符串。现在我想知道字符串是否以与匹配模式的字符串相同的字符开头。
更新
例如,我有一个正则表达式[az]\\:[A-Z]*
。然后,第一个符号的符号集是a
和z
。然后第二个符号的符号集是:
。然后第三个符号的符号集是A-Z
。然后第四个符号的符号集是A-Z
。 ....
答案 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用于空格等等),然后需要一个递归算法来构建输出集。
如果这是你想要的,下一个问题是,“你真正试图解决什么问题?”