正则表达式 – 如何将正则表达式的匹配指定给变量?

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何将正则表达式的匹配指定给变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含各种条目的文本文件.每个条目以包含所有星号的行结束.

我想使用shell命令来解析这个文件,并将每个条目分配给一个变量.我该怎么做?

以下是输入文件的示例:

***********
Field1
***********
Lorem ipsum
Data to match
***********
More data
Still more data
***********

这是我的解决方案到目前为止

#!/bin/bash
for error in `python example.py | sed -n '/.*/,/^\**$/p'`
do
    echo -e $error
    echo -e "\n"
done

然而,这只是将匹配文本中的每个单词分配给$error,而不是整个块.

我很惊讶,没有看到一个本机的bash解决方案.是的,bash有正则表达式.您可以在线查找大量的随机文档,特别是如果在查询中包含“bash_rematch”,或者仅查看手册页.这是一个愚蠢的例子,从 here开始,稍作修改,打印整个匹配以及每个捕获的匹配,用于正则表达式.
if [[ $str =~ $regex ]]; then
    echo "$str matches"
    echo "matching substring: ${BASH_REMATCH[0]}"
    i=1
    n=${#BASH_REMATCH[*]}
    while [[ $i -lt $n ]]
    do
        echo "  capture[$i]: ${BASH_REMATCH[$i]}"
        let i++
    done
else
    echo "$str does not match"
fi

重要的一点是扩展测试[[…]]使用其正则表达式比较=〜将整个匹配存储在${BASH_REMATCH [0]}中,捕获的匹配在${BASH_REMATCH [i]}中.

猜你在找的正则表达式相关文章