2015-05-19 80 views
1

給定的字符串作爲以下之間,僅含有01通過空間與在每一行的末尾的另外的空間分隔開。
我只想選擇數字,但沒有一個在該行的末尾進行搜索,並與,取代它們之間的空間。
當我嘗試創建一個正則表達式我要麼選擇所有空格或周圍的數字了。正則表達式來選擇空間中的兩個數字

GIVEN  WANTED  NOT WANTED  TOTALLY NOT WANTED 
0 1 0 1 0,1,0,1 0,1,0,1,  ,,,, 
0 0 1 0 0,0,1,0 0,0,1,0,  ,,,, 
1 0 1 0 1,0,1,0 1,0,1,0,  ,,,, 
1 1 0 0 1,1,0,0 1,1,0,0,  ,,,, 
1 1 1 0 1,1,1,0 1,1,1,0,  ,,,, 
1 1 0 0 1,1,0,0 1,1,0,0,  ,,,, 

那麼,我怎樣才能只選擇那些有兩個數字,而不是數字的空格。是否有某種匹配但不選擇的語法功能?

工作答案:
由於多個答案是正確的我想在這裏收集它們。該接受的答案是第一位的,因爲它是最短的正則表達式,完全不被需要的。

(?!$) - 請注意,在此正則表達式開始處有一個space
(?<=\d)\s(?=\d)(?<=[01])\s(?=[01])如果你的數字是0或1

+0

是你之前想正則表達式是什麼? –

+0

我嘗試了正則表達式如'[01] [」「] [01]'。我正在使用Java,但我正在嘗試搜索並在記事本++中進行替換。 –

回答

2

如果你確定你的文字僅包含10您可以使用此

正則表達式(?!$)出現在正則表達式

檢查的開始space字符這個Demo

,如果你不知道,你可以用這一個(?<=\d) (?=\d)但這也只有向前看,向後看的工作支持,我不知道你使用的到底是哪的語言,這是PERL正則表達式

檢查Demo

+0

我接受這個答案,因爲它是最短的正則表達式,另外它不需要向前看,後面看。 –

+0

你有兩種選擇:) –

0

要選擇對兩邊的數字一組,你可以使用:

\d()\d 

匹配在這種情況下,1組將包含的空間。或者你也可以通過捕獲兩個數字,只是將你的逗號更換整個組,

(\d) (\d) 

抽取組1和2,並把它們之間的逗號可以工作。

+0

這個現在確實比其他的答案更復雜的是,當我非常新的正則表達式,我不知道如何提取組。 –

+0

你應該使用'\ s'而不是' – Tushar

2

您可以使用下面的匹配僅僅是數字,而不是數字之間的空間:

(?<=\d)\s(?=\d) or (?<=[01])\s(?=[01]) if your digits are either 0 or 1 

而且隨着,

更換見DEMO

相關問題