比如:
*a 与 *b?a,要判断出前者包含后者
用正则表达式可以吗?我没有用过,希望能简单说一下使用方法。
10 个解决方案
#1
牛B问题
#2
一般都是判断一个完整的字符串里是否包含了有通配符的字符串
像你的*a 与 *b?a
因为*可以代表任意字符,那说它包含和没包含都是可以的
像你的*a 与 *b?a
因为*可以代表任意字符,那说它包含和没包含都是可以的
#3
我想搂主意思大概是*代表任意的多个字符 ?任意的一个字符这么个规则
我看这个简单的比较不需要用正则 主要是你要定好*/?表示的是0-n/0-1还是1-n/1-1个字符
比如 a* 和 *b?a
就首先从一个模式找出非通配符的字符串 作为一个符号表 通配符则保留 比如*a 符号表就是"*" "a"
对于连续出现的通配符可以根据你的策略(就是是否0个字符也算符合?或者*)合并为一个
比如*?合并为*(如果*表示0-n而?表示0-1)
从另一个模式字符串找所符号表中所有非通配符的符号 确保按顺序出现了所有的符号
比如符号表有a b两个符号 你就需要模式字符串中从后往前出现过a和b
能满足这个条件的情况统统记录下来 并记录每次出现 符号前后的字符数(0-n)
这样再顺序检查每次通配符出现的时候 另一模式字串中的那一处间隔 大小符合这个限制 那就可以说一个模式包含另一个模式 否则尝试下一个非通配符号都匹配的情况 不知道说清了没有 我这是一个笨点的方法 性能和占用内存空间都没有考虑
然后从另一模式按找出这些符号 记录出现的顺序 令符号的出现顺序和
比如*a第一个字符是通配符么
我看这个简单的比较不需要用正则 主要是你要定好*/?表示的是0-n/0-1还是1-n/1-1个字符
比如 a* 和 *b?a
就首先从一个模式找出非通配符的字符串 作为一个符号表 通配符则保留 比如*a 符号表就是"*" "a"
对于连续出现的通配符可以根据你的策略(就是是否0个字符也算符合?或者*)合并为一个
比如*?合并为*(如果*表示0-n而?表示0-1)
从另一个模式字符串找所符号表中所有非通配符的符号 确保按顺序出现了所有的符号
比如符号表有a b两个符号 你就需要模式字符串中从后往前出现过a和b
能满足这个条件的情况统统记录下来 并记录每次出现 符号前后的字符数(0-n)
这样再顺序检查每次通配符出现的时候 另一模式字串中的那一处间隔 大小符合这个限制 那就可以说一个模式包含另一个模式 否则尝试下一个非通配符号都匹配的情况 不知道说清了没有 我这是一个笨点的方法 性能和占用内存空间都没有考虑
然后从另一模式按找出这些符号 记录出现的顺序 令符号的出现顺序和
比如*a第一个字符是通配符么
#4
*代表0到n任意个字符,?代表一个字符
你说的我没太理解,我再研究研究
#5
用双方已知字符的交集作为分隔符,分区域判断包含关系
#6
自己写算法吗,呵呵,我试试。
#7
如果同一个字符在不同位置都有交集呢?
比如*a?a和*b?a
#8
哦,貌似自己写算法也不是很困难,前几天写了一个,有一些小问题,这段时间忙,没时间改,有空再改改试试。
#9
自己写判断吧,不难的,
#10
楼主解决了吗,我也遇到这个问题了
#1
牛B问题
#2
一般都是判断一个完整的字符串里是否包含了有通配符的字符串
像你的*a 与 *b?a
因为*可以代表任意字符,那说它包含和没包含都是可以的
像你的*a 与 *b?a
因为*可以代表任意字符,那说它包含和没包含都是可以的
#3
我想搂主意思大概是*代表任意的多个字符 ?任意的一个字符这么个规则
我看这个简单的比较不需要用正则 主要是你要定好*/?表示的是0-n/0-1还是1-n/1-1个字符
比如 a* 和 *b?a
就首先从一个模式找出非通配符的字符串 作为一个符号表 通配符则保留 比如*a 符号表就是"*" "a"
对于连续出现的通配符可以根据你的策略(就是是否0个字符也算符合?或者*)合并为一个
比如*?合并为*(如果*表示0-n而?表示0-1)
从另一个模式字符串找所符号表中所有非通配符的符号 确保按顺序出现了所有的符号
比如符号表有a b两个符号 你就需要模式字符串中从后往前出现过a和b
能满足这个条件的情况统统记录下来 并记录每次出现 符号前后的字符数(0-n)
这样再顺序检查每次通配符出现的时候 另一模式字串中的那一处间隔 大小符合这个限制 那就可以说一个模式包含另一个模式 否则尝试下一个非通配符号都匹配的情况 不知道说清了没有 我这是一个笨点的方法 性能和占用内存空间都没有考虑
然后从另一模式按找出这些符号 记录出现的顺序 令符号的出现顺序和
比如*a第一个字符是通配符么
我看这个简单的比较不需要用正则 主要是你要定好*/?表示的是0-n/0-1还是1-n/1-1个字符
比如 a* 和 *b?a
就首先从一个模式找出非通配符的字符串 作为一个符号表 通配符则保留 比如*a 符号表就是"*" "a"
对于连续出现的通配符可以根据你的策略(就是是否0个字符也算符合?或者*)合并为一个
比如*?合并为*(如果*表示0-n而?表示0-1)
从另一个模式字符串找所符号表中所有非通配符的符号 确保按顺序出现了所有的符号
比如符号表有a b两个符号 你就需要模式字符串中从后往前出现过a和b
能满足这个条件的情况统统记录下来 并记录每次出现 符号前后的字符数(0-n)
这样再顺序检查每次通配符出现的时候 另一模式字串中的那一处间隔 大小符合这个限制 那就可以说一个模式包含另一个模式 否则尝试下一个非通配符号都匹配的情况 不知道说清了没有 我这是一个笨点的方法 性能和占用内存空间都没有考虑
然后从另一模式按找出这些符号 记录出现的顺序 令符号的出现顺序和
比如*a第一个字符是通配符么
#4
*代表0到n任意个字符,?代表一个字符
你说的我没太理解,我再研究研究
#5
用双方已知字符的交集作为分隔符,分区域判断包含关系
#6
自己写算法吗,呵呵,我试试。
#7
如果同一个字符在不同位置都有交集呢?
比如*a?a和*b?a
#8
哦,貌似自己写算法也不是很困难,前几天写了一个,有一些小问题,这段时间忙,没时间改,有空再改改试试。
#9
自己写判断吧,不难的,
#10
楼主解决了吗,我也遇到这个问题了