gpt4 book ai didi

regex - bash 中的正则表达式不规则

转载 作者:行者123 更新时间:2023-11-29 09:28:50 33 4
gpt4 key购买 nike

我看到了很多关于正则表达式的信息,但找不到解决我的问题的方法。我希望之前没有涉及到这一点。像往常一样,我对获得解决方案并不那么感兴趣,而是想了解它为什么会这样工作。只有这样我才能学习 bash 及其所有的复杂性。

我的例子:

#!/bin/bash
Stext="Hallo World"
re="(.[a-z]*)$"
[[ $Stext =~ $re ]]
DBTable=${BASH_REMATCH[1]}
echo $DBTable
DBTable=`expr "$Stext" : $re`
echo $DBTable

正如你们大多数人所猜到的,我没有将 World 打印两次,我也不知道为什么。

到目前为止,在将表达式转义为:

DBTable=`expr "$Stext" : '\(.[a-z]*\)$'`

这仍然没有产生预期的结果。

任何人都可以给我一些见解吗?

最佳答案

expr 将正则表达式视为隐式锚定在字符串的开头——也就是说,它隐式添加了一个 ^——因此您需要在点之前提供所有内容兴趣。此外,正如您所注意到的,您需要编写 \( and \) 而不是 ( and ) ,因为 expr 使用基本正则表达式 (BRE),而不是扩展正则表达式 (ERE)。所以,这:

expr 'Hallo World' : '.[a-z]* \(.[a-z]*\)$'

将打印World

关于regex - bash 中的正则表达式不规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721356/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com