2014-02-26 28 views
0

我正在使用Perl腳本,並且想要在兩個不同變量之間分割字符串。使用perl提取兩個分隔符之間的子串並將其作爲新字符串存儲

這是我的字符串

<p>Hello my server number is 1221.899999 , please select an option</p> 

我希望能夠提取的服務器數量,所以我想<p>Hello my server number is後的字符串分割和下面的空間之前,讓我結束字符串將打印爲

1221.899999 

是正則表達式最好的解決方案,而不是使用拆分?

回答

1

如何:

$str = 'Hello my server number is 1221.899999 , please select an option'; 
$str =~ s/^.*\b(\d+\.\d+)\b.*$/$1/; 
say $str; 

$str =~ s/^Hello my server number is (\d+\.\d+)\s.*$/$1/; 

如果字符串的開頭總是說。

輸出:

1221.899999 
2

我只想用一個正則表達式。

my $str = 'Hello my server number is 1221.899999 , please select an option'; 
my ($num) = $str =~ /Hello my server number is (\d+\.\d+) ,/; 

$num如果匹配沒有成功,將會是未定義的。

+0

$ str =〜/你好,我的服務器號碼是(\ S +),/;如果我有一個服務器名稱,如「你好我的服務器號碼是104/238,12.1,請選擇一個選項」 –

+0

@阿爾多的解決方案回答我的問題:) –

+2

@Nongo阿爾多的解決方案不符合數字,它會在「is」之後抓住任何東西。在這種情況下似乎更具體會更好。 –

0

我會使用正則表達式。這個怎麼樣:

$str = 'Hello my server number is 1221.899999 , please select an option'; 
print $1 if $str =~ /is (.*) ,/; 
+1

它不適用於知覺:「這是我的服務器號碼123.456,是的,它是'。 – Toto

+0

對於那個特定的情況,正則表達式是:/ number(。*),/ – Aldo

0

只要你是肯定總是有逗號前的空間,正確答案是類似於此

my $string = '<p>Hello my server number is 1221.899999 , please select an option</p>'; 

my ($server) = $string =~ /server number is (\S+)/; 

print $server; 

輸出

東西
1221.899999 

如果逗號可能在服務器編號結束後立即出現,那麼您需要修改iy是這個

my ($server) = $string =~ /server number is ([^\s,]+)/; 
相關問題