Regex 带分组正则表达式的Grep
我写了一个固定的表达:Regex 带分组正则表达式的Grep,regex,bash,Regex,Bash,我写了一个固定的表达: (?<value>(?<=start=)\d+) 如果您希望获得“start=”后面的数字,则不需要命名的捕获组。您甚至不需要捕获括号,这才是-o真正需要做的。 简化: grep -Po '(?<=start=)\d+' grep-Po'(?此处不需要。使用-o选项仅显示与模式匹配的匹配部分,因此结合使用正向lookback断言和-o命令行选项,您不需要捕获组。lookback不使用字符串中的字符,而只使用assERT决定是否可能匹配 echo
(?<value>(?<=start=)\d+)
如果您希望获得“start=”后面的数字,则不需要命名的捕获组。您甚至不需要捕获括号,这才是
-o
真正需要做的。
简化:
grep -Po '(?<=start=)\d+'
grep-Po'(?此处不需要。使用-o
选项仅显示与模式匹配的匹配部分,因此结合使用正向lookback断言和-o
命令行选项,您不需要捕获组。lookback不使用字符串中的字符,而只使用assERT决定是否可能匹配
echo 'foo.com/check?var=test&start=11' | grep -Po '(?<=start=)\d+'
# 11
使用\K
执行正向查找的另一种方法:
echo 'foo.com/check?var=test&start=11' | grep -Po 'start=\K\d+'
11
你到底想要什么?
echo 'some text here:11' | grep -Po '(?<=here:)\d+'
11
echo 'some text here:apple' | grep -Po '(?<=here:)\w+'
apple
echo 'foo.com/check?var=test&start=11' | grep -Po '(?<=start=)\d+'
# 11
grep -Po 'start=\K\d+'
echo 'foo.com/check?var=test&start=11' | grep -Po 'start=\K\d+'
11