1

我还在学习正则表达式,我似乎被卡住了。

我想编写一个匹配包含“bulk”的 URL 路径的 reg exp:

/bulk-category_one/product
/another-category/bulk-product

只获取产品页面,而不是类别页面,例如:

/bulk-category_one/
/another-category/

所以我想出了:

[/].*(bulk).*[/].+|[/].*[/].*(bulk).*

但是有分页,所以当我将 reg exp 放入 Google Analytics 时,我发现如下内容:

/bulk-category/_/showAll/1/

他们都有

/_/ 

而且我不想要任何包含的 URL 路径

/_/ 

我不知道如何排除它们。

4

2 回答 2

0

我会这样做:

/[^/\s]*bulk[^/]*/[^/\s]+(?!/)|/[^/\s]+/[^/]*bulk[^/\s]*(?!/)

第一部分:

  • /- 匹配斜线
  • [^/\s]*- 匹配所有不是斜线而不是空格的东西
  • bulk- 从字面上匹配批量
  • [^/]*- 匹配所有不是斜线的东西
  • /- 匹配斜线
  • [^/\s]+- 匹配所有不是斜线而不是空格的东西
  • (?!/)- 确保之后没有斜线(即 url 有两个部分)

第二部分大致相同,但这次 'bulk' 应该出现在 URL 的第二部分而不是第一部分。

如果您在 url 的第二部分特别需要“产品”一词,则需要另一种选择:

/[^/\s]*bulk[^/]*/[^/\s]*product[^/\s]*(?!/)|/[^/\s]+/[^/]*bulk[^/\s]*product[^/\s]*(?!/)|/[^/\s]+/[^/]*product[^/\s]*bulk[^/\s]*(?!/)
于 2012-05-08T19:57:08.233 回答
-1

如果我将那个简单的正则表达式应用于文件 FILE

egrep ".*bulk.*product" FILE 

其中包含您上面的示例,它仅与 2 行匹配bulkand product。此外,我们还可以排除 '/_/':

egrep ".*bulk.*product" FILE | egrep -v "/_/" 

两次调用通常比一个万能的调用更容易定义和理解。

于 2012-05-08T22:17:49.267 回答