2016-02-01 107 views
0

我正在尋找的正則表達式,爲下面的字符串顯示IP地址正則表達式除去第一和最後一個字符

LAN_10.100.10.41_fc3/7

我需要一個像下面

10.100輸出.10.41

在此先感謝..

+2

請添加您輸入的信息(許多地址?每行一個?),工具,或者你正在使用的語言,和你有什麼企圖或'如何 – sidyll

+0

開始_([^_] +)_' – raina77ow

+0

我有LAN_10.100.10。41_fc3/7文本在一個插槽消息這只是一個字,你可以考慮 – user3714706

回答

1

A捕獲組將最簡單的,我認爲。類似這樣的:

.+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).+ 

上面假設你使用類似C++或C#的東西來解析和顯示。因此,顯示結果是你的「語言」的一個功能。如果它在數組中被捕獲,則相應地顯示它。有時,它會顯示\1。您必須閱讀該答案的文檔。

然而,正如史蒂芬指出,如果你使用這個和grep一個shell腳本,那麼這樣的事情也應該足夠了:

grep -o "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" - 

這不承擔Linux和BASH所以如果你是使用Windows,檢查可能用Powershell完成的工作。的-o說,和-「僅打印該行的匹配部分」是STDIN BASH符號。不知道你用什麼樣的工具對於這一點,就很難更具體。順便說一句,最好的正則表達式測試網站,我還沒有找到is Regexr

+0

它超過了'255.255.255.255'。 –

+0

根本不需要捕獲組。只需將'。+'關閉,然後組就不再需要了。 –

+0

@StevenDoggart OP沒有表明他在做什麼匹配。所以我在開始時加入了'。+'以「確定」。例如,使用Boost :: Regex,如果您使用(我相信)'boost :: regex_match()'函數系列,那麼正則表達式必須*完全匹配*字符串,而boost :: regex_search()'表現更多比如用什麼'grep'或類似的工具。捕獲組的規定很簡單,因爲他說他想顯示IP地址並且不僅僅匹配它。 –

0

使用環視聲明使用以下正則表達式從字符串中提取IP地址。

正則表達式/(?<=._)[\d.]+(?=_.)/g

說明

(?<=._)尋找什麼,然後它出現在你的字符串的模式的_

(?=_.)尋找什麼,然後_這是在您的字符串出現。

[\d.]+尋找儘可能多的digitsdots這使得一個IP地址的模式。

它匹配LAN_10.100.10.41_fc3/7僅是IP地址的中間部分。

Regex101 Demo

相關問題