我有一個這樣的字符串之間的字符:往裏模式如果父模式匹配和共享模式
門票順序:№123123123. CED-MSW-RPG-MOW-CEK PODYLOVA/ALEMR 555 423578932 19OCT11門票順序:№123123123. 346257. CSK-MOW-PRG-MOW-CWQ PODYLOVA/ALEMR 555 45837043 19OCT11
我需要收集是CEK所有代碼,外嫁女,PRG等。我首先嚐試這種模式:
$pattern = '#[-|\s]([A-Z]{3})#';
作爲一個結果讓我的所有代碼(這是確定)和用戶的第一個3個字符姓:「POD」從「PODYLOVA」。如果我說:「以後我的代碼必須是一個連字符或可用空間字符改變我的模式是:
$pattern = '#[-|\s]([A-Z]{3})[-|\s]#';
我$相匹配的VAR有這樣的:
array (
0 =>
array (
0 => ' CED-',
1 => '-RPG-',
2 => '-CEK ',
3 => ' CSK-',
4 => '-PRG-',
5 => '-CWQ ',
),
1 =>
array (
0 => 'CED',
1 => 'RPG',
2 => 'CEK',
3 => 'CSK',
4 => 'PRG',
5 => 'CWQ',
),
)
你可以看到,我的模式沒有「共享」所需的代碼之間的連字符
我看到兩個解決方案,但不能成像模式,將適合:
- 使圖案在代碼之間分享連字符
- 製作更復雜的圖案:首先收集包含代碼的文本(「CED-MSW-RPG-MOW-CEK」),然後獲取所有#([AZ] {3} #在這個模式裏面。
看來,解決方案#1是最好的在我的情況,但它應該看起來如何?
你甚至不需要括號。你可能想給@the_ghost一個提示,說明'\ b'是[word邊界](http://www.regular-expressions.info/wordboundaries.html)。 –
謝謝!我只是走過這個模式,甚至嘗試過\ b,但並不認爲一切都那麼簡單 –