字符串前的grep文本 - 正则表达式

时间:2015-08-05 05:32:13

标签: regex bash grep

我必须使用bash(仅限)从输入html文本下面提取几个字段。

HTML输入

<a href="/something/somemorething/page?id=1234425">SOMETEXT</a>

我从上面的输入中提取了id值和SOMETEXT。

我希望使用一些正则表达式的grep应该锻炼。 对于id_value,我正在使用以下正则表达式

"id=[0-9]*"

这给了我正确的结果。

grep -o 'id=[0-9]*' index.html | head -n 5

但是我不确定我应该使用什么样的正则表达式来抓取文本直到下一个</a>

提前致谢。

2 个答案:

答案 0 :(得分:1)

你的OP中的正则表达式("id=[0-9]*")看起来在你的情况下是有效的,但更好的方法是磨掉锚标签本身。

这是一个提取id值的正则表达式:

<a.*?id=(\d.*?)">

这是一个正则表达式,用于提取<a>标记内的内容:

<a.*?">(.*?)<\/a>

答案 1 :(得分:1)

(?<=>).*?(?=<)

您可以将此项与grep -P一起使用,因为它使用perl支持的外观。请参阅演示。

https://regex101.com/r/fM9lY3/21