2016-07-11 73 views
-1

我試圖想出正則表達式,使點,但沒有雙點:正則表達式匹配的文件路徑不包括 「」

X/Y/AC - 比賽
X/Y /../ac - 不匹配。

感謝,

+2

它依賴於正則表達式匹配的味道。順便說一句,爲什麼不使用'if(s.Contains(「..」)){/ * FAIL * /}'? –

+0

好吧,一個正則表達式讓你檢查你使用的是什麼工具/語言:'(?<!\。)\。(?!\。)'。如果你只需要匹配一個帶'.'但沒有兩個點的字符串,可以使用'^(?!。* \。\。)。* \ .. * $'。這在RE2或Bash中不起作用。 –

+0

嗨,似乎不支持在libc的正則表達式()/ regcomp()中的lookahead。當我包含lookahead的東西時,regcomp()會以「regcomp失敗:前面的正則表達式無效」失敗。任何不涉及展望的解決方案?謝謝。 – pgp

回答

1

這就像/(?<!\.)\.(?!\.)/regex negative lookaheads/lookbehinds一樣簡單。

詳細說明:這將搜索一個.(點),其周圍沒有另一個.(點)。其中(?<!\.)是否定向後觀看,並且不消費字符,並且(?!\.)是否定預測,它在匹配中也不消耗字符。

請記住,Javascript正則表達式不能做後向。

+0

awwww什麼,你剛纔看到我的答案,並改變你的,所以它會張貼在我的https://postimg.org/image/78b4wfl5d/ –

+0

@CarlosBribiescas對不起,我沒有看到你的答案,當我正在更新和重新審查它。它恰好是這樣看的。 –

+1

不幸的是我不得不承認你的話;-)不用擔心 –