1

私はまだ正規表現を学んでいますが、行き詰まっているようです。

「バルク」を含む次のような URL パスに一致する正規表現を書きたかったのです。

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

製品ページのみを取得し、次のようなカテゴリ ページは取得しません。

/bulk-category_one/
/another-category/

だから私は思いついた:

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

しかし、ページネーションがあるので、正規表現を Google アナリティクスに入れると、次のようなものが見つかります。

/bulk-category/_/showAll/1/

それらのすべてが持っています

/_/ 

を含む URL パスは必要ありません。

/_/ 

それらを除外する方法がわかりません。

4

2 に答える 2

0

私はこのようにそれについて行きます:

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

最初の部分:

  • /- スラッシュに一致
  • [^/\s]*- スラッシュでも空白でもないすべてのものに一致
  • bulk- 文字通りバルクにマッチ
  • [^/]*- スラッシュ以外のすべてに一致
  • /- スラッシュに一致
  • [^/\s]+- スラッシュでも空白でもないすべてのものに一致
  • (?!/)- 後ろにスラッシュがないことを確認してください (つまり、URL には 2 つの部分があります)。

2 番目の部分はほとんど同じですが、今回は URL の最初の部分ではなく 2 番目の部分で「バルク」が予期されます。

特に URL の 2 番目の部分に「製品」という単語が必要な場合は、もう 1 つの代替手段が必要になります。

/[^/\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行にのみ一致しbulkますproduct。さらに、「/_/」を除外することもできます。

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

多くの場合、2つの呼び出しは、すべてに対応する大き​​な呼び出しよりも、定義と理解がはるかに簡単です。

于 2012-05-08T22:17:49.267 に答える