2016-03-23 99 views
0

我目前正在嘗試製作一個表達式,用於獲取在它們之後沒有空格的所有逗號以及所有冒號。正則表達式逗號沒有後面的空格

我試過(,([^\s]))|([:]),這很接近,但似乎在沒有空格的逗號後面抓住了字符。

我也試過(,\s+)|([:]),它會抓住所有的冒號和所有的逗號,後面跟一個空格以及空格。

我想選擇被封閉在* *在以下幾點:

你好,我的名字是*:* tibsar *,*好嗎?

任何想法?

+1

您是否有一些您期待的有效匹配的例子? –

+0

@noob更新了問題! –

回答

7

我認爲這個正則表達式會完成這項工作。

正則表達式:(,(?=\S)|:)

說明:

  • (?=\S)positive lookahead檢查,後性格是不是whitespace不捕獲它匹配。 [^\s]\S相同。

  • 並使用變更|匹配:哪些可能出現在任何地方。

Regex101 Demo

To match , at end of line(if needed).


你在哪裏錯了(,([^\s]))|([:])(,\s+)|([:])

  • (,([^\s]))不匹配的逗號緊跟非空白,但它也捕捉它在比賽中。

  • (,\s+) Straightaway匹配一個逗號,然後是空格,所以這是完全錯誤的。

+0

工作!當我可以 –

+0

我會很高興它做到了。 –

+0

請注意,這不會在字符串/行的末尾生效(因爲字符串的末尾不是字符,因此不會匹配'\ S'。您應該使用* negative * lookahead來代替:',(?!)'。 @tibsar:請注意'\ S'(和'\ s')非常廣泛,涵蓋的內容遠不止是空格。以防萬一空間和標籤之間的區別對你很重要。 – Joey

相關問題