2013-02-21 119 views
1

我(在PHP)字符串列表:正則表達式匹配只有不與引號開始的字符串

A2C

BDR

DDV

「DDV

aaa

「aaa

什麼是RegEx表達式僅匹配不以引號開頭的字符串?在這個例子中有四個這樣的字符串。所以,我只需要匹配四個字符串(來計算它們)。對於這個列表我使用了一個循環,但我現在只需要RegEx。謝謝!

我試着用

[^"]([a-zA-Z0-9]*)* 

,但它仍然匹配的所有字符串即使是那些開始引號。

回答

1

你缺少字符串錨^,這意味着如果它在任何地方里面出現表達式匹配字符串的開始。很顯然,序列中的「不含引號的任何內容,包括字符串結尾」出現在所有示例輸入中。

這個表達式將匹配你想要什麼:

^[^"] 

它只是它的第一個字符是不是一個雙引號任何輸入相匹配。沒有必要打擾其他角色。

0

試試:

^[^"](.*)/gm 

(如果不止一個字符串是變量。)

+0

我認爲它應該是/^[^"](.*)/m – Kannika 2013-02-21 11:55:27

+0

'(。*)'有什麼想法?它是否需要?捕獲除了第一個*之外的所有字符在附加捕獲組中是否有用? – Jon 2013-02-21 13:30:21

0
$strigs_arr  = array(); 
foreach($strings as $str){ 
    //$str   = '"aaa'; 
    preg_match('/^(?P<string>[^"].*)/',$str,$match); 

    $strigs_arr[] = $match['string']; 
} 
echo "<pre>"; 
print_r($strigs_arr); 
相關問題