相关疑难解决方法(0)

为什么我的正则表达式适用于 X 而不适用于 Y?

我写了一个正则表达式,它在某个程序(grep、sed、awk、perl、python、ruby、ksh、bash、zsh、find、emacs、vi、vim、gedit 等)中运行良好。但是当我在不同的程序(或不同的 unix 变体)中使用它时,它会停止匹配。为什么?

regular-expression wildcards

94
推荐指数
1
解决办法
1万
查看次数

Bash =~ regex 和 https://regex101.com/

使用https://regex101.com/我构建了一个正则表达式来返回字符串中第一次出现的 IP 地址。

正则表达式:

(?:\d{1,3}\.)+(?:\d{1,3})
Run Code Online (Sandbox Code Playgroud)

RegExp 包括分隔符:

/(?:\d{1,3}\.)+(?:\d{1,3})/
Run Code Online (Sandbox Code Playgroud)

使用以下测试字符串:

eu-west                       140.243.64.99 
Run Code Online (Sandbox Code Playgroud)

它返回一个完整的匹配:

140.243.64.99
Run Code Online (Sandbox Code Playgroud)

无论我尝试使用锚点等做什么,以下 bash 脚本都不适用于生成的正则表达式。

temp="eu-west                       140.243.64.99            "
regexp="(?:\d{1,3}\.)+(?:\d{1,3})"
if [[ $temp =~ $regexp ]]; then
  echo "found a match"
else
  echo "No IP address returned"
fi
Run Code Online (Sandbox Code Playgroud)

bash regular-expression

20
推荐指数
2
解决办法
8万
查看次数

标签 统计

regular-expression ×2

bash ×1

wildcards ×1