正则表达式在 bash 中不起作用

标签 regex bash

我的正则表达式:

 (<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/

相关文章:

mysql - Dockerfile RUN read 命令给我错误

linux - 如何设置非root用户的cronjob?

regex - 使用 sed 提取单引号之间的字符串

javascript - 有人可以解释一下这个数组的正则表达式过滤吗

javascript - 风格不适用于 ul li 倒计时

javascript - 格式 ###.## 的非负和非零正则表达式

bash - 如何弄清楚为什么我的 shell 会崩溃?

perl - 对具有无序整数列的文件进行排序

regex - 从文件名和路径解析日期和时间

javascript - 如何在 ng-regex 中包含 qutoes + 双引号?