2015-03-13 90 views
0

我有這樣一個字符串:"abc" "cd - e"。我需要把這個分成兩個以下字符串:具有雙引號和空格的Perl拆分字符串

  1. ​​
  2. "cd - e"

我試過在Perl的幾個選項,但不能滿足我需要的。有人可以指導我嗎?謝謝。

+2

也:http://perldoc.perl.org/Text/ParseWords.html – jm666 2015-03-13 20:11:59

回答

2
my @strings = $input =~ /"[^"]*"/g; 
  • 假設輸入是有效的。基本上,你可以使用正則表達式匹配來驗證或提取,但同時進行是非常困難的。
  • 假設引用的字段不能包含引號,因爲您沒有提到轉義機制。
2

您可以在這是由一個"前面和後面一個"空格分開:

use strict; 
use warnings; 

my $s = '"abc" "cd - e"'; 
my @matches = split /(?<=")\s+(?=")/, $s; 
# "abc" 
# "cd - e" 
+0

良好的學習......它完美:-) – user2705120 2015-03-13 20:27:41

0

如果你的輸入會專門有兩個字符串作爲你的建議(而不是任意ñ串),那麼這應該工作:

$s = '"abc" "cd - e"'; 

$s =~ /(".*") (".*")/; 
$s1 = $1; 
$s2 = $2; 

或者你可以讓它多了幾分安全與「取代.沒有正引號」,即[^"]

$s =~ /("[^"]*") ("[^"]*")/; 
$s1 = $1; 
$s2 = $2; 
相關問題