所以我才刚刚开始学习正则表达式。我必须在大字符串中提取一个子字符串。

我的弦基本上是一条包含很多东西的大行。我已经确定了需要提取的模式。我需要此行中的数字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(包括空格)。

我对上述正则表达式的(有限)解释使我相信它将输出数字。

任何帮助表示赞赏。

最佳答案

语法错误是因为“:”与“$ p”没有用空格(或制表符)分隔。修复该问题后,正则表达式的尾随空白将阻止其匹配。解决了这两个问题后,示例脚本将按预期工作。

关于regex - 使用expr和regex在Linux中提取子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28522326/

10-13 05:49