1. ホーム
  2. regex

[解決済み] sedで非欲張り(消極的)な正規表現マッチング?

2022-02-25 23:09:22

質問

sedを使ってURLの行を整理し、ドメインだけを抽出しようとしています。

だから、から。

http://www.suepearson.co.uk/product/174/71/3816/

欲しい

http://www.suepearson.co.uk/

(末尾のスラッシュはあってもなくてもかまいません)

試してみました。

 sed 's|\(http:\/\/.*?\/\).*|\1|'

と(欲張りでない量詞をエスケープする)。

sed 's|\(http:\/\/.*\?\/\).*|\1|'

が、欲張りでない量詞( ? ) が機能しないため、常に文字列全体とマッチしてしまいます。

どのように解決するのですか?

基本的なPosix/GNU正規表現も拡張Posix/GNU正規表現も、非貪欲量詞を認識しません。 幸いなことに、この文脈のためのPerlの正規表現はかなり簡単に手に入ります。

perl -pe 's|(http://.*?/).*|\1|'