所以我刚开始学习正则表达式。我必须在一个大字符串中提取一个子字符串。
我的字符串基本上是一个包含很多东西的大行。我已经确定了我需要提取的模式。我需要这一行中的数字A lot of stuff<li>65,435 views</li>a lot of stuff
这个数字只是例如。
这整个字符串实际上是一个大行,我的文件views.txt
包含很多这样的行。
所以我试过了,
while read p
do
y=`expr "$p": ".*<li>\(.*\) views "`
echo $y
done < views.txt
我希望迭代这个views.txt
文件中的所有这些行并打印出数字。
我收到语法错误。我真的不知道这里出了什么问题。我相信我已正确地将<li>
和views
的数字包括在内,包括空格。
对上述正则表达式的我(有限)解释使我相信它会输出数字。
感谢任何帮助。
答案 0 :(得分:5)
语法错误是因为&#34;:&#34;没有与&#34; $ p&#34;分开通过空格(或标签)。修复后,正则表达式有一个尾随空白,可以防止匹配。修复这两个问题,您的示例脚本按预期工作。