0

http://で始まり、で終わる文字列を見つけたい.com。ただし、印刷する必要はありませんhttp://.com

$str = "http://example.com";
$str =~ /http:\/\/example.com/;$result = "$&\n";
print $result; 

基本的にPythonで行われるのと同じです。

#!/usr/bin/python
import re
str = 'http://example.com'
search = re.search(r'http://(\w+).com', str)
if search:
  print search.group(1)

「例」のみが表示されます。Perlでそれを行う方法は?

4

4 に答える 4

3

専用のパーサーを使用した堅牢なソリューション:

use feature 'say';
use strict; use warnings;

use URI;
use URI::Find;

URI::Find->new(sub {
    my $uri = shift;
    say $uri->host =~ m{(\w+)[.]com\z};
})->find(\ (my $x = q{http://example.com/}) );
于 2012-05-18T10:09:34.687 に答える
0

この簡単なコードを試してください:

$str = 'http://example.com'; 
print "$_\n" for $str =~ m{\A http:// (\w+) [.] com \z}x;

\A結果が完全であることを確認するには、パターンを先頭 、 、および末尾 に固定します\z/つまようじ傾き症候群を避けるためとは異なるパターン区切り文字を使用し、xオプションを使用してパターンを読みやすくします。

(...)抽出したい部分をキャプチャするために使用する必要があります。

このコードはideone.comでテストできます。

于 2012-05-18T12:48:39.700 に答える
0

以下のそれほどパーリッシュなソリューションではありません:

$str = 'http://example.com';

if (($url) = $str =~ /http:\/\/(\w+)\.com/) {
    print $url, "\n";
}
于 2012-05-18T15:28:27.017 に答える
-1

Python スニペットでは、必要なテキストを括弧でキャプチャしていますが、Perl スニペットでは省略しています。また、キャプチャしたい部分は として表現するのではなく、ハードコードされてい\w+ます。そこを掘る。

于 2012-05-18T10:06:22.110 に答える