首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否匹配除特定单词以外的所有字母/数字组合?

是否匹配除特定单词以外的所有字母/数字组合?
EN

Stack Overflow用户
提问于 2012-03-09 06:00:34
回答 2查看 186关注 0票数 0

我已经找到了一些关于负面展望的东西,但我仍然不确定我应该为此做些什么。我有一个RewriteRule ^([a-zA-Z0-9]+)/?$,它工作得很好,除了现在我想让它特别排除“帮助”这个词(只排除“帮助”,不排除“帮助”、“幼虫”等),将来可能还会排除一些其他的词。很抱歉,我知道这里有很多类似的问题,但我还不能想出如何将它们具体应用于此。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-09 06:09:20

Apache mod-rewrite应该有一个定义良好的顺序,说明它如何解析RewriteRules,以及如果存在冲突,它将遵循哪条规则。

假设它将遵循第一个匹配规则,只需在一般规则之前定义特定规则。

票数 1
EN

Stack Overflow用户

发布于 2012-03-09 10:16:11

此外,信不信由你,你可以写一个匹配所有字母数字字符串的正则表达式,除了"help“。可以将正则表达式重写为不使用&~ (and not)运算符(并不广泛使用)的正则表达式。

正则表达式看起来像是狗的早餐,所以你并不真的想这样做。但这是如何实现的。

首先,匹配所有较短的字母数字代码。"hel“是可以接受的问题,任何其他三个字母/数字的序列都不是:

代码语言:javascript
运行
复制
[a-zA-Z0-9]{1,3}

我们还可以识别五个或更多字符的序列;通过包含以下内容,它们也不是“帮助”:

代码语言:javascript
运行
复制
[a-zA-Z0-9]{5,}

现在到了棘手的部分,匹配四个字母的序列没有帮助。这意味着任何不以h开头的四个字符标识符,或者不以e作为第二个字母的任何四个字符。等等:

代码语言:javascript
运行
复制
[a-gi-zA-Z0-9][a-zA-Z0-9]{3}
[a-zA-Z0-9][a-df-zA-Z0-9][a-zA-Z0-9]{2}
[a-zA-Z0-9]{2}[a-km-zA-Z0-9][a-zA-Z0-9]
[a-zA-Z0-9]{3}[a-oq-zA-Z0-9]

唯一与其中任何一个都不匹配的四个字符模式是单词"help“。它与第一个不匹配,因为h,第二个不匹配,因为e等等。

因此,使用|和锚定将它们组合在一起。深呼吸:

代码语言:javascript
运行
复制
^([a-zA-Z0-9]{1,3}|[a-zA-Z0-9]{5,}|[a-gi-zA-Z0-9][a-zA-Z0-9]{3}|[a-zA-Z0-9][a-df-zA-Z0-9][a-zA-Z0-9]{2}|[a-zA-Z0-9]{2}[a-km-zA-Z0-9][a-zA-Z0-9]|[a-zA-Z0-9]{3}[a-oq-zA-Z0-9])$

这应该是EFNet IRC网络上#unix的新通道密钥。:)

我要测试这个吗?你疯了吗。

当然是这样的,但是使用sed。有一点。大多数元字符都必须转义,哦:

代码语言:javascript
运行
复制
$ sed -n -e '/^\([a-zA-Z0-9]\{1,3\}\|[a-zA-Z0-9]\{5,\}\|[a-gi-zA-Z0-9][a-zA-Z0-9]\{3\}\|[a-zA-Z0-9][a-df-zA-Z0-9][a-zA-Z0-9]\{2\}\|[a-zA-Z0-9]\{2\}[a-km-zA-Z0-9][a-zA-Z0-9]\|[a-zA-Z0-9]\{3\}[a-oq-zA-Z0-9]\)$/p'
a  <- typed
a
aa  <- typed
aa
aaa  <-
aaa
aaaa   <-
aaaa
aaaaa  <-
aaaaa
help   <-  aha, no response from sed
aelp   <-
aelp
helper <-
helper
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9625694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档