2016-03-08 47 views
1
(?=.+?,*)[^,]+ 

有結果我得到和期待:任何事情之前和分隔符正則表達式後

「這,就是成功的」

結果:

  • 成功

「也是成功的」

結果:

  • 也是成功的

以下是錯誤車道

「這不是成功的」

結果:

  • 這不是成功的

我只想匹配當且僅當分隔符是字符串中,前後分隔符之後任何事情。我嘗試了一下+.。但是當分隔符如','出現時,要麼得到的結果包含所有內容,要麼完全沒有結果。

回答

0

您可以使用此lookarounds基於正則表達式:

(?<=,)[^,]*|[^,]*(?=,) 

RegEx Demo

  • (?<=,)聲稱有在比賽前一個,
  • (?=,)斷言還有就是比賽結束後,
  • [^,]*匹配0或更多的a除了逗號
+1

我不知道是誰低估了你,但到目前爲止,這與我在C#代碼中的場景非常吻合。它的恥辱JavaScript不支持向後看,但它可能不適用於每個人。如果有人沒有通用解決方案,我會將其標記爲答案。謝謝! – user99999991

+0

不知道爲什麼它被低估。也許是因爲我先用look-around而不要求正則表達式。 – anubhava

+0

下面是一個捕獲組的版本:[',([^,] *)|([^,] *),'](https://regex101.com/r/lX1oR2/4),幾乎可以在任何地方工作。 –

0

紐約字符試試下面的正則表達式:

([^,]+)?,([^,]+)|([^,]+),([^,]+)? 

測試在PHP 5.5。 (上面的正則表達式在PHP中效果很好,具有preg_match_all函數)

+1

至少在regexr.com上,我注意到了這個問題。 「單詞」不會返回匹配。 「word,test」返回整個字符串,而且我也不想在結果中使用分隔符。 「word,test,foo」返回2個匹配項:單詞,測試 - 爲什麼 – user99999991

相關問題