一直在寻找有关 bash 正则表达式的一些更高级的正则表达式信息,但没有找到太多相关信息。
这是一个简单的字符串的概念:
myString="DO-BATCH BATCH-DO"
if [[ $myString =~ ([[:alpha:]]*)-([[:alpha:]]*) ]]; then
echo ${BASH_REMATCH[1]} #first perens
echo ${BASH_REMATCH[2]} #second perens
echo ${BASH_REMATCH[0]} #full match
fi
outputs:
BATCH
DO
DO-BATCH
Run Code Online (Sandbox Code Playgroud)
很好,它完成了第一场比赛(BATCH-DO),但是我如何拉第二场比赛(DO-BATCH)?我只是在这里画一个空白,找不到关于 bash 正则表达式的太多信息。
好的,我这样做的一种方法是将其放入 for 循环中:
myString="DO-BATCH BATCH-DO"
for aString in ${myString[@]}; do
if [[ ${aString} =~ ([[:alpha:]]*)-([[:alpha:]]*) ]]; then
echo ${BASH_REMATCH[1]} #first perens
echo ${BASH_REMATCH[2]} #second perens
echo ${BASH_REMATCH[0]} #full match
fi
done
which outputs:
DO
BATCH
DO-BATCH
BATCH
DO
BATCH-DO
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我有点希望如果可能的话,从一个正则表达式中提取所有内容。