2017-05-08 113 views
2

我試圖匹配WORD中的最後一個字符。正則表達式WORD的最後一個字符

WORD是非空白字符序列 '[^ \ n \ r \ t \ f]'或空行匹配^ $。

我提出這樣做​​的表達式爲: 「[^ \ n \噸\ r \ F] \(?:[\ $ \ n \噸\ r \ F] \)」

的正則表達式匹配一個非空白字符,後面跟着一個空格字符或行尾。

但我不知道如何阻止它從結果中排除下面的空格字符,以及爲什麼它似乎沒有捕獲行末尾的字符。

使用字符串「Hi World!」,我期望:「我」和「!」被捕獲。

相反,我得到:「我」。

我可以採取哪些措施來解決這個問題?

+1

問題:你期望如何匹配空行?那最後一個字是什麼? –

+0

你正在使用什麼風味正則表達式?捕捉組是你的一件事情,還是它必須是一個全或無的交易? –

+0

它可以轉到空行的開頭,也可以跳過空行。我並不特別關心這種行爲。捕捉組對我來說是一件事情。我使用elisp正則表達式。 –

回答

3

注意,非捕獲組(?:...)[^ \n\t\r\f](?:[ \$\n\t\r\f])仍然匹配(消耗)的空白字符(因此,它變成了匹配的一部分),它不會在字符串的末尾匹配作爲$符號不是字符類內的字符串結尾錨點,它被解析爲文字$符號。

您可以使用

\S(?!\S) 

regex demo

\S後面沒有一個非空格字符(由於(?!\S)負前瞻)非空白字符相匹配。

相關問題