[正则表达式]如何判断字符串中不包含某些子字符串呢?
2008-08-28 13:35
597 查看
如果要判断的是字符串中不包含某一些字符的话可以直接使用^[^foobar]+$来处理,或者判断是否包含了某些字符串可以直接使用^/w*(foo|bar)/w*$来处理,可是当要判断不包含某一些字符串的时候就没有那么方便了……搞了一小会儿得出的结论是:无法完美解决该问题。。。
方法^/w*(f(?!oobar))/w*$虽然可以匹配所有不包含foobar字符串的内容,不过条件是,内容中必须含有f字符,否则就无法匹配。。。因此考虑或者的情况^(f(?!oobar)|[^f](?!foobar))+$当以f开头的时候和不以f开头的时候分别匹配。
可是上面的方法还是不好,每个要不匹配的字符串都要把首字母单独列出来,因此重新设计方法^((?<!foobar)/w(?!foobar))+$结果虽然可以匹配所有不包含foobar字符串的内容,可是却不能匹配foobar本身。。。再改。。。^((?!foobar)/w)+$这个匹配的意思是在/w前不以foobar为结尾的字符集合,因此foobar在结尾或者在中间的情况肯定都是不能匹配的,关键在于foobar在开头的情况和foobar本身,这里我使用了^$界定符来设定需要被匹配的内容边界是整段内容,那么foobar在开头的情况下开始符^也作为匹配字符使得^foobar成为以foobar为结尾的字符串,因此foobar在开头亦不能匹配,那么foobar本身也不能匹配就好理解了。
这样问题看似就解决了,但是具体情况具体分析,这里必须使用界定符才能匹配内容,如果是要查找所有不带a字母的单词,那么界定符可以换成/b即/b((?!a)/w)+/b(虽然有更方便的方法/b[^a]+/b。。。)
当然有人会说我这样判断内容中是否包含字符串foobar多麻烦,直接使用indexOf或者其他字符串提供的方法就可以很方便查找到了。。。确实呀。。。但是具体情况还是要具体分析,这次其实是想做一个URLrewrite,想对所有的urlpath.html重定义到一个新的地址,但是有一些urlpath想过滤掉直接调用原地址,因此就有了以上这些探索和学习。。。
方法^/w*(f(?!oobar))/w*$虽然可以匹配所有不包含foobar字符串的内容,不过条件是,内容中必须含有f字符,否则就无法匹配。。。因此考虑或者的情况^(f(?!oobar)|[^f](?!foobar))+$当以f开头的时候和不以f开头的时候分别匹配。
可是上面的方法还是不好,每个要不匹配的字符串都要把首字母单独列出来,因此重新设计方法^((?<!foobar)/w(?!foobar))+$结果虽然可以匹配所有不包含foobar字符串的内容,可是却不能匹配foobar本身。。。再改。。。^((?!foobar)/w)+$这个匹配的意思是在/w前不以foobar为结尾的字符集合,因此foobar在结尾或者在中间的情况肯定都是不能匹配的,关键在于foobar在开头的情况和foobar本身,这里我使用了^$界定符来设定需要被匹配的内容边界是整段内容,那么foobar在开头的情况下开始符^也作为匹配字符使得^foobar成为以foobar为结尾的字符串,因此foobar在开头亦不能匹配,那么foobar本身也不能匹配就好理解了。
这样问题看似就解决了,但是具体情况具体分析,这里必须使用界定符才能匹配内容,如果是要查找所有不带a字母的单词,那么界定符可以换成/b即/b((?!a)/w)+/b(虽然有更方便的方法/b[^a]+/b。。。)
当然有人会说我这样判断内容中是否包含字符串foobar多麻烦,直接使用indexOf或者其他字符串提供的方法就可以很方便查找到了。。。确实呀。。。但是具体情况还是要具体分析,这次其实是想做一个URLrewrite,想对所有的urlpath.html重定义到一个新的地址,但是有一些urlpath想过滤掉直接调用原地址,因此就有了以上这些探索和学习。。。
相关文章推荐
- 正则表达式匹配不包含某些字符串的技巧
- 正则表达式,判断一串字符串里面包含一定的形式,并解析成图片
- JAVA 判断字符串是否包含某个字符 正则表达式
- 正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
- 正则表达式匹配不包含某些字符串的技巧
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- js中用正则表达式判断字符串中是否包含中文和英文
- js中用正则表达式判断字符串中是否包含中文和英文
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- 正则表达式匹配不包含某些字符串的技巧
- 如何通过正则表达式判断一组字符串是否符合规范,首字母必须是字母、$、或是下划线
- 正则表达式匹配不包含某些字符串的技巧
- Java正则表达式:不包含某些字符串 怎么写?
- 正则表达式匹配不包含某些字符串
- Java 编程下正则表达式判断字符串是否包含中文
- 编码正则判断 字符串中是否包含某些字符
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- 判断字符串是否包含中文的正则表达式
- 正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字 分类: Android JAVA 2015-06-07 21:08 31人阅读 评论(0) 收藏