2

URL の一部を一致させようとしています。この URL は既に処理されており、ドメイン名のみで構成されています。

例えば:

現在持っている URL は business.time.com です。トップ レベル ドメイン (.com) を削除したいと考えています。私が望む結果はbusiness.timeです

次のコードを使用しています。

gawk'{
match($1, /[a-zA-Z0-9\-\.]+[^(.com|.org|.edu|.gov|.mil)]/, where)
print where[0]
print where[1]
}' test

テストでは、次の 4 行があります。

business.time.com
mybest.try.com
this.is.a.example.org
this.is.another.example.edu

私はこれを期待していました:

business.time

mybest.try

this.is.a.example

this.is.another.example

ただし、出力は

business.t

mybest.try

this.is.a.examp

this.is.another.examp

何が悪いのか、どうすればいいのか誰か教えてもらえますか?

ありがとう

4

3 に答える 3

0

問題は、 [^] は式ではなく単一の文字を除外するためだけのものであるため、基本的に次のような正規表現を持っていることです:

match($1, /[a-zA-Z0-9\-\.]+[^()|.cedgilmoruv)]/, where)

これらの文字はすべて [^] 式に含まれているため、一致できないのはそのためです。ime.combuisiness.time.com

私は gawk の良い否定的な一致を見つけることができませんでしたが、以下のものを構築しました。あなたのために働くことを願っています:

match($1, /([a-zA-Z0-9\-\.]+)(\.com|\.org|\.edu|\.gov|\.mil)/, where)
print where[0]
print where[1]
print where[2]
> }' test

したがって、最初の部分は where[1] になり、where[2] には高レベルのドメインがあります

business.time.com
business.time
.com
mybest.try.com
mybest.try
.com
this.is.a.example.org
this.is.a.example
.org
this.is.another.example.edu
this.is.another.example
.edu
于 2013-07-29T23:12:48.427 に答える