匹配特定字符串,除非它包含某些文本

时间:2016-02-04 12:08:01

标签: regex

我正在使用网址并使用简单的正则表达式

^go\/([_0-9a-z-])+

匹配任何以“go /”

开头的内容

我现在需要扩展它,所以它仍然匹配,但现在只有当它不包含另一个字符串 - 在这种情况下“.aspx”(即我试图匹配文件夹,但不是文件名)

如此成功的比赛将包括

go/test1
go/test2

和不成功的将包括

go/test3.aspx
go/test4.aspx?param
stop/test5

2 个答案:

答案 0 :(得分:3)

将正则表达式更改为:

^go\/([_0-9a-z-])+$

$匹配字符串的结尾,因此不允许更多字符。如果您只想匹配之后没有“.something”的字符串,那么您可以使用look-arounds

答案 1 :(得分:0)

  1. 如果您希望在+
  2. 之后匹配所有内容,请将go/放入捕获组内
  3. .aspx定义第二个可选捕获组。过滤掉第二组不为空的匹配项。正则表达式不是镇上唯一的编程语言。
  4. 模式和stub

    ^go\/([_0-9a-z-]+)(\.aspx)?