Regex 使用sed获取字符串

Regex 使用sed获取字符串,regex,sed,Regex,Sed,我使用curl从一个站点获取html,然后我只需要一个特定的字符串,它位于“standards.xml?revision=”和“&”之间。我正在使用sed来实现这一点,但我似乎无法正确使用正则表达式,需要一些帮助 curl website.com | sed -r 's|.*standards\.xml\?revision=([0-9]+).*|\1|' 我得到的输出是完整的html,如有任何帮助,将不胜感激。您可以使用grep-oP(PCRE选项): \K重置匹配的文本,因此只返回后面

我使用curl从一个站点获取html,然后我只需要一个特定的字符串,它位于“standards.xml?revision=”和“&”之间。我正在使用sed来实现这一点,但我似乎无法正确使用正则表达式,需要一些帮助

curl website.com | sed -r 's|.*standards\.xml\?revision=([0-9]+).*|\1|'

我得到的输出是完整的html,如有任何帮助,将不胜感激。

您可以使用
grep-oP
(PCRE选项):


\K
重置匹配的文本,因此只返回后面的部分
[0-9]+

您就快到了。尝试将
-n
选项与
sed
一起使用,以不打印不匹配的数据,并将
p
修饰符添加到
s | |
以打印替换字符串

curl website.com | sed -n -r 's|.*standards\.xml\?revision=([0-9]+).*|\1|p'
从前面的sed[0-9]+仅当数字出现时,可能[^&]+更合适。
使用“和”非常好,以避免出现问题,因此我选择它:-)

您应该使用grep…我如何使用grep来解决这个问题?啊,这太完美了!非常感谢。sir@Konnor欢迎看来你对这个网站还不熟悉。如果任何ANS为你工作,考虑接受ANS通过点击空心绿刻痕除ANS.S.S.我注意到你还没有接受任何你的3个答案。
curl website.com | sed -n -r 's|.*standards\.xml\?revision=([0-9]+).*|\1|p'
curl website.com | sed -n '/xml/ {s|.*standards\.xml\?revision=([^&]+).*|\1|p;q;}'