正则表达式删除第一个和最后一个字符

时间:2016-02-01 18:29:18

标签: regex

我正在搜索正则表达式,只显示以下字符串

的IP地址

LAN_10.100.10.41_fc3 / 7

我需要输出如下

10.100.10.41

提前致谢..

2 个答案:

答案 0 :(得分:1)

我认为最简单的捕获组。像这样:

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

以上假设您正在使用类似C ++或C#的内容进行解析和显示。因此,显示结果是您的“语言”的功能。如果它在数组中捕获,则相应地显示它。有时会显示\1。您必须阅读该答案的文档。

然而,正如Steven所指出的,如果你正在使用shell脚本和grep,那么这样的东西也应该足够了:

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

这确实假设Linux和BASH,所以如果你使用的是Windows,请查看使用Powershell可以实现的功能。 -o表示“仅打印行的匹配部分”,而-STDIN的BASH表示法。在不知道您正在使用哪种工具的情况下,很难更具体。顺便说一句,我发现的最好的正则表达式测试网站is Regexr

答案 1 :(得分:0)

要使用环顾四周断言从字符串中提取IP地址,请使用以下正则表达式。

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

<强>解释

(?<=._)会查找以_开头的任何内容,它出现在字符串的模式中。

(?=_.)会查找显示在字符串中的_后面的任何内容。

[\d.]+查找尽可能多的digitsdots,它们构成了IP地址的模式。

它仅匹配LAN_ 10.100.10.41 _fc3/7仅作为IP地址的中间部分。

<强> Regex101 Demo