2017-04-25 60 views
0

嗨我需要匹配字符串之間可以有0 +連字符的字符串。我使用PHP preg-match來執行此操作。字符可以是大寫或小寫。這裏有幾個例子:正則表達式匹配字符串與無到多個連字符

TESTTESTtest published successfully 
test-TEST-test published successfully 
Test-test published successfully 

我的正則表達式需要捕獲所有這些不同的情況。

我正在逐行檢查一個日誌,並試圖將下面的正則表達式匹配到每一行。

這是我目前的if語句:

if(preg_match('/(\w*) published successfully/',$line,$matches){ 

} 

我只是用\ w *爲我的性格捕捉,因爲我沒有必要擔心之前的連字符,但我需要適應這種處理新方案。誰能幫我嗎?

+2

你能解釋一下你在做什麼,爲什麼'expode(「 - 」,$ s)'不起作用? –

+0

嗨我已經添加了額外的信息到我的第一個問題,不知道我將如何使用爆炸在這種情況下,但我可能沒有提供足夠的信息之前。 – olliejjc16

+2

好,你沒有想過角色課嗎?像'[\ w - ] *'?你是否需要擔心諸如「成功發佈」的情況? –

回答

1

如果你不需要擔心邊緣情況下,像----- published successfully所有你需要的是在\w-添加到字符類[...](我也建議使用+量詞來匹配1次或多次出現,不0或更多,以避免收到空場比賽):

if(preg_match('/([\w-]+) published successfully/',$line,$matches){ 

} 

regex demo