2011-09-26 40 views
0

我想創建一個PHP正則表達式如果兩個單詞,它們之間的空間任意數量的彼此相鄰的出現,將匹配未知數量的空格(」「)連續兩個詞。PHP正則表達式 - 尋找它們之間

例如,匹配「Daniel       Baylis」(在'Daniel'和'Baylis'之間3個空格)。我試着用這一點,但它似乎並沒有工作時:

"/DANIEL[ ]{1,5}BAYLIS/" (this was to check up to 5 spaces which the most I expect in the data) 

"/DANIEL[ ]{*}BAYLIS/" 

我需要更大的文本和名稱的機構內提取名稱可以是文本內的任何地方出現。用戶輸入錯誤是創建多個空格的原因。

謝謝大家! - 丹

+0

你也可以只是先替換過時的空格,然後匹配它,這應該更容易;) – Kenny

+0

'DANIEL [] {1,5} BAYLIS 「這看起來不錯,爲什麼不工作? – Kent

+0

@Kent我猜的情況是問題...,我實際使用) – Romain

回答

3

/DANIEL[ ]+BAYLIS/應該這樣做... +將會glob的一個或多個發生在前面的字符(-class),在這種情況下,litteral空間。

另外,假設你想匹配無論大小寫,你需要調整你的正則表達式是不區分大小寫的,我不知道如何在PHP中做(這取決於你的正則表達式的味道使用...很長一段時間,因爲我最後一次碰到...)

+3

這就是'/ i'修飾符。在這裏使用單詞邊界也是一個好主意,當然括號也不是必需的。 '/ \ bDANIEL + BAYLIS \ b/i'應該這樣做。 –

+0

@TimPietzcker我思考了'/ i',但是從我的頭頂有一個'pregi_'命名空間中的一套在PHP中的方法有效地處理不區分大小寫的正則表達式,而不必添加'/ i'。 ..但是,我已經說過了......只是爲了清晰起見,方括號只是在那裏。並且字邊界確實很好,但問題聲明並不要求他們根據我的理解:) – Romain

+0

感謝羅曼和蒂姆 - 那個工作完美! – Dan