2014-03-31 54 views
1

我想在perl中匹配給定字符串的子字符串。匹配子字符串與Perl中的空格

當子字符串包含空格時匹配失敗。

例子:

請考慮以下字符串變量:

var = "test [abc], def, xyz," 

表達:

($var=~ m/test [abc]/) 

沒有空格工作正常不返回1.

字符串:

Example: 

($var=~ m/def/) 

is returning 1. 

請幫忙。

感謝

回答

5

[]在正則表達式中有特殊含義。他們定義字符類。如果你想匹配[],你需要轉義:

$var=~ m/test \[abc\]/ 
+0

謝謝。在這裏,我使用「真正的字符串」作爲示例。如果「test [abc]」也包含在變量中,我該怎麼辦? –

+0

例如:($ var =〜m/$ some_var /),其中some_var是「test [abc]」或任何其他字符串 –

+1

@SandeepSingh您可以使用引用序列:'$ var =〜m/\ Q $ some_var \ E /'這樣,你會直接匹配'$ some_var'的值。 – Jerry

2

[]在正則表達式字符類。你必須逃生者:

($var=~ m/test \[abc\]/) 

在您的例子test [abc]將匹配test atest btest c。原因[abc]意味着任何a,b,c

+0

謝謝,但什麼情況下做的 - 無論是LHS和RHS包含變量:($ VAR =〜M/$ some_var /) ,其中some_var是「test [abc]」或任何其他字符串 –

+0

首先在變量'$ some_var'內跳出'[]'。然後在正則表達式中使用它。 –