[Perl]http URL の正規表現について
コメント内のURLを自動的にリンクする処理の正規表現が、よく見るとかなり怪しかったの少し調べてみたのですが、それほど正確でなくてもいいと言うのであれば、
s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+
で良いみたいです。
なので、PerlでURLを自動的にリンクする処理は以下のような感じになります。
my $pattern = "s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+";
$text =~ s/($pattern)/<a href="$1">$1<\/a>/g;
ちなみに、正確なhttp URL の正規表現はこうらしい。
my $digit = q{[0-9]};
my $upalpha = q{[A-Z]};
my $lowalpha = q{[a-z]};
my $alpha = qq{(?:$lowalpha|$upalpha)};
my $alphanum = qq{(?:$alpha|$digit)};
my $hex = qq{(?:$digit|[A-Fa-f])};
my $escaped = qq{%$hex$hex};
my $mark = q{[-_.!~*'()]};
my $unreserved = qq{(?:$alphanum|$mark)};
my $reserved = q{[;/?:@&=+$,]};
my $uric = qq{(?:$reserved|$unreserved|$escaped)};
my $query = qq{$uric*};
my $pchar = qq{(?:$unreserved|$escaped|} . q{[:@&=+$,])};
my $param = qq{$pchar*};
my $segment = qq{$pchar*(?:;$param)*};
my $path_segments = qq{$segment(?:/$segment)*};
my $abs_path = qq{/$path_segments};
my $port = qq{$digit*};
my $IPv4address = qq{$digit+\\.$digit+\\.$digit+\\.$digit+};
my $toplabel = qq{(?:$alpha|$alpha(?:$alphanum|-)*$alphanum)};
my $domainlabel = qq{(?:$alphanum|$alphanum(?:$alphanum|-)*$alphanum)};
my $hostname = qq{(?:$domainlabel\\.)*$toplabel\\.?};
my $host = qq{(?:$hostname|$IPv4address)};
my $http_URL = qq{http://$host(?::$port)?(?:$abs_path(?:\\?$query)?)?};
my $pattern = $http_URL;
ぐはっ!
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+
で良いみたいです。
なので、PerlでURLを自動的にリンクする処理は以下のような感じになります。
my $pattern = "s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+";
$text =~ s/($pattern)/<a href="$1">$1<\/a>/g;
ちなみに、正確なhttp URL の正規表現はこうらしい。
my $digit = q{[0-9]};
my $upalpha = q{[A-Z]};
my $lowalpha = q{[a-z]};
my $alpha = qq{(?:$lowalpha|$upalpha)};
my $alphanum = qq{(?:$alpha|$digit)};
my $hex = qq{(?:$digit|[A-Fa-f])};
my $escaped = qq{%$hex$hex};
my $mark = q{[-_.!~*'()]};
my $unreserved = qq{(?:$alphanum|$mark)};
my $reserved = q{[;/?:@&=+$,]};
my $uric = qq{(?:$reserved|$unreserved|$escaped)};
my $query = qq{$uric*};
my $pchar = qq{(?:$unreserved|$escaped|} . q{[:@&=+$,])};
my $param = qq{$pchar*};
my $segment = qq{$pchar*(?:;$param)*};
my $path_segments = qq{$segment(?:/$segment)*};
my $abs_path = qq{/$path_segments};
my $port = qq{$digit*};
my $IPv4address = qq{$digit+\\.$digit+\\.$digit+\\.$digit+};
my $toplabel = qq{(?:$alpha|$alpha(?:$alphanum|-)*$alphanum)};
my $domainlabel = qq{(?:$alphanum|$alphanum(?:$alphanum|-)*$alphanum)};
my $hostname = qq{(?:$domainlabel\\.)*$toplabel\\.?};
my $host = qq{(?:$hostname|$IPv4address)};
my $http_URL = qq{http://$host(?::$port)?(?:$abs_path(?:\\?$query)?)?};
my $pattern = $http_URL;
ぐはっ!
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
[1792] Posted by kagahiro at 2010/03/22 14:48:13
オープン | 0 point | Link (2) | Trackback (0) | Comment (0)
オープン | 0 point | Link (2) | Trackback (0) | Comment (0)
キーワード
[Perl]http URL の正規表現について 関連リンク
| Perl(パール) | |
| Perl(パール)とは、Larry Wall氏によって開発された、テキストの検索や抽出やレポート作成に適した、C言語に似た表記法のスクリプトプログラミング言語で、テキスト処理に優れていることから、CGIとしてWebアプリケ... | |
| YouTube動画のURLを正規表現で埋め込みコードに変換するためのPerlコード | |
| 掲示板などのスレッドやコメント欄に投稿されたYouTube動画のURLを埋め込みコードに変換する方法を、ネットで検索していろいろ調べましたが、YouTube動画のURLは、http://www.youtube.com/watch?v={VID}とhttp://you... | |
[Perl]http URL の正規表現について トラックバック
トラックバックURL :
[Perl]http URL の正規表現についてへのコメント
アクセスランキング
今日のアクセスランキング TOP 10
- Google 日本語入力がオープンソースに (5 PV)
- FX最強ツール「Infinity(川ツールを使った高額インジ)」販売で話題のFX系YouTubeチャンネル #詐欺とは言えないようだが (5 PV)
- [FX]ニュースや経済指標による相場の値動きに応じて順張りで自動売買する高勝率EA「TATETATE(タテタテ)」 #システムトレード #MT4 #有料版 (5 PV)
- FC2動画やYouTubeなどから無料動画(映画やドラマ、アニメ、音楽など)を探す方法 (4 PV)
- Twitter がワーム攻撃を受ける (4 PV)
- [将棋]NHK杯2回戦第1局は増田康宏四段が雁木っぽい戦型で深浦康市九段の矢倉を粉砕 (4 PV)
- Windows 10の大型アップデート「Windows 10 Creators Update」が配信開始 (4 PV)
- 個人向けのRSS広告配信サービス (4 PV)
- Google(グーグル)検索 日本版 - ウェブ、画像の検索 (4 PV)
- 嘘でしょ?忍者は実在した!「秘伝 伊賀流忍術の奥義」が動画で公開 (4 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (66 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (53 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3」 #MT4 (37 PV)
- Google News (グーグルニュース)日本版 (22 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (21 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (21 PV)
- [PR]noteで販売している自作EAの一覧 (20 PV)
- MT4向け1ポジブレイクアウトEA「HEADLINE」オープンソースライセンス(GPL3)で公開 #USDJPY (16 PV)
- USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (16 PV)
- MT4向け無料ヘッジ(両建て)ツール(EA)「STOPPER FREE」 #自動売買 #FX (16 PV)
アクセス統計
ディレクトリ
関連サイト