我如何从匹配中排除模式中的任何字符串
How can I exclude a string anyhwere in the pattern from matches?
我需要写一个正则表达式,它将匹配URL做不有一个特定的查询字符串名称/值对任何地方在其URL。应该匹配所有其他查询字符串名称,以及具有相同名称的所有其他查询字符串值。不应该匹配同一目录(或子目录)中的其他页面。
例如,假设我需要匹配的基URL是:http://www.domain.com/directory/之前我需要从匹配中排除的查询字符串名称和值是:
<>以前弗雷德= f 之前到目前为止,我得到了:
<>以前http://www ' .domain ' .com/directory/(?!('?|&) 弗雷德= f $) 之前匹配:
- http://www.domain.com/directory/
- http://www.domain.com/directory/?fred=a
- http://www.domain.com/directory/?fred=foo
但不是:
- http://www.domain.com/directory/?fred=f
问题是这个正则表达式也匹配:
- http://www.domain.com/directory/?foo=bar&弗雷德= f
如果我使用这个正则表达式:
(?i)http://www'.domain'.com/directory/[a-z]*(?!('?|&)fred=f$)
则匹配此URL:
- http://www.domain.com/directory/foobar?fred=f
(似乎[a-z]比disallow组更强)
当字符串存在于模式中的任何地方时,我如何防止匹配?
(这将在ActionScript3/ECMAScript3正则表达式引擎中使用)
是否有任何理由需要使用正则表达式?为什么不只是一个简单的字符串搜索?它的作用完全相同,但更容易理解。
myString.search("fred=f");
泰勒。我的一位同事为这个答案提供了依据:
http://www.domain.com/directory/(?!.*('?|&)fred=f($|&|#))('?|#|$)
-
http://www.domain.com/directory/
-
http://www.domain.com/directory/?fred=a
-
http://www.domain.com/directory/?fred=foo
-
http://www.domain.com/directory/?foo=bar
但不是:
-
http://www.domain.com/directory/?fred=f
-
http://www.domain.com/directory/?fred=f&a=b
-
http://www.domain.com/directory/?a=b&fred=f
编辑:更改表达式。以前的版本仅限于99个字符。
EDIT2:改进了表达式,现在匹配更多的情况。
我做了这样的东西
(domain.com/directory/.*fred=(?!f$)(?!f&).*)|(domain.com/directory/$)|(domain.com/directory/'?(?!.*fred=f).*)
并在以下字符串
上进行测试- domain.com/directory/? foo =的bar = f
- domain.com/directory/? foo = bar
- domain.com/directory/? aaa酒吧=
- domain.com/directory/
- domain.com/directory/?弗雷德=
- domain.com/directory/?弗雷德= foo
- domain.com/directory/? foo = bar&弗雷德= foo
- domain.com/directory/?弗雷德=的aaaw = bbb
- domain.com/directory/?弗雷德= f
- domain.com/directory/? foo = bar&弗雷德= f
我的regexp匹配黑体部分。我已经在www.RegexTester.com
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 同位素库错误:未捕获错误无布局模式包装生产线8
- Sencha Touch构建-排除文件
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- D3.js模式不适用于弧形或圆环图
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 使用 Karma,如何排除与模式匹配的所有文件,但特定子文件夹中的文件除外
- gulp.src 排除与模式匹配的所有文件,除了一个 - 不工作
- 正则表达式,以包括所有特定模式并仅排除一种情况
- 如何按模式查找,但排除条件列表
- 匹配字符串中的一个模式但排除另一个模式的Javascript正则表达式
- 具体的glob模式不匹配后,广泛排除
- Regex测试字符串包含一个特定的模式,并排除特定的符号使用javascript
- 我如何在模式中排除brs
- Javascript正则表达式获取子字符串,排除模式
- 如何在angularjs中深度观察一个对象,排除指定的模式
- 我如何从匹配中排除模式中的任何字符串