我的正则表达式:
(<property\sname=\"uri\"\s[value=\"htttp:\/\/]+(\d+\.)+\d+)+
文字示例:
<bean id="journeyWSClient" parent="abstractClient" class=" lib.JourneyWSClient">
<property name="uri" value="http://192.24.342.432:20010/some/path/1_0_0"/>
<!-- Fortuna -->
<!-- property name="uri" value="http://164.7.19.11:20010/some/path/1_0_0"/ -->
它适用于http://regexr.com/,但是当我将正则表达式放在bash脚本中时,它不起作用。我需要逃脱一些角色吗?想法?
仅使用一个正则表达式提取IP的Bonus cookie。
答案 0 :(得分:2)
将\d
替换为[0-9]
,将\s
替换为[[:space:]]
,并将IP匹配部分调整为([0-9]+(\.[0-9]+)+)
(或将其简化为([0-9.]+)
})以便能够使用${BASH_REMATCH[1]}
获取其值:
text='<property name="uri" value="http://192.49.200.142:20010/some/path/1_0_0"/>'
regex='<property[[:space:]]name="uri"[[:space:]]value="http://([0-9]+(\.[0-9]+)+)'
if [[ $text =~ $regex ]]; then
echo ${BASH_REMATCH[1]};
fi
请参阅IDEONE demo
答案 1 :(得分:0)
看看这对你有用..
value="http:\/\/(([0-9].?)+):
如果您只使用带有http模式的IP
,这对我有用grep http TEXT_SAMPLE_FILE |sed -E 's;.*value="http://(([0-9].?)+):.*;\1;g'