我的正则表达式:
(<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 的额外 cookie。
最佳答案
将 \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
关于正则表达式在 bash 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209633/