我正在寻找一个特殊的Regex,它可以识别某个字符串之后的IP地址。
这是IP的准则
(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))
IP在我的日志中跟随到
DST=192.168.1.1
我只需要在DST=之后选择IP,而不需要在SRC=之后选择
发布于 2010-10-08 19:45:17
问题是它找到了DST=192.168.1.1,但它应该只找到192.168.1.1
这在很大程度上取决于你使用的工具。例如,使用sed,这可能会给您想要的。
echo "... SRC=10.1.1.1 DST=192.168.1.1 LEN=40 ..." | \
sed -e 's/.*DST=\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/g'
192.168.1.1
请参阅这篇关于正则组的文章。
如果您想要高亮显示,这看起来可能是您想要的/需要的。来自配置。
# cs_re_s:<color>:<regular expression>
# Like cs_re but only the substrings are used(!). E.g.:
# ^....(...)...(...)
# In the example above only what matches between '(' and ')' is
# assigned a color. See the 'acctail' colorscheme for an example.
甚至有一个例子,在那个文件中,接近我认为你想要的。这个例子是cs_re_s:cyan:kernel: .*(SRC=[^ ]*) *(DST=[^ ]*)
,您想要的是突出显示DST后面的任何内容,可能是cs_re_s:red:kernel: .*DST=([^ ]*)
。
发布于 2010-10-08 19:03:59
DST=(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))
发布于 2010-10-08 19:50:07
它可以通过查找后面的表达式来完成。
regex_test.txt
内容:
DST=192.168.1.1
SRC=192.168.1.1
然后从命令行:
grep -P '(?<=DST=)(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))' regex_test.txt
产出:
DST=192.168.1.1
grep -Po '(?<=DST=)(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))' regex_test.txt
产出:
192.168.1.1
https://serverfault.com/questions/189165
复制相似问题