正则表达式 - 获取这些但不是这些

时间:2010-12-22 18:19:48

标签: regex .htaccess

所以我想要一个像这样工作的正则表达式:

获取[a-z0-9.-]但不是'example','example1','example3','user','home','h3llo'

修改

我需要在.htaccess

中使用此正则表达式

例子可以是我想得的东西。

2 个答案:

答案 0 :(得分:5)

您可能需要提供更多您想要匹配的示例,但这是一个开始:^(?!example[13]?)[a-z0-9.-]+$

>>> 'Match' if re.match('(?!example[13]?)[a-z0-9.-]', 'example') else 'No match'
'No match'
>>> 'Match' if re.match('(?!example[13]?)[a-z0-9.-]', 'example1') else 'No match'
'No match'
>>> 'Match' if re.match('(?!example[13]?)[a-z0-9.-]', 'example3') else 'No match'
'No match'
>>> 'Match' if re.match('(?!example[13]?)[a-z0-9.-]', 'dsfhdsagfir') else 'No match'
'Match'

它使用negative lookahead对您不想匹配的字符串失败。

答案 1 :(得分:1)

RewriteCond怎么样?我假设这是针对mod_rewrite的,因为你使用的是.htaccess文件。

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond   %{REQUEST_URI}    !^(example[13]?|user|home|h3llo)$
  RewriteRule   ^([a-z0-9.-]+)$   <make-your-rewrite-using-$1-here>
</IfModule>

[未测试]