regex - 正则表达式中反斜杠后跟重音符号是什么意思?

标签 regex

我在正则表达式中发现了以下内容:

s/.*\`\(.*\)'/\1/g

我想知道重音是什么意思。我对正则表达式只有非常基本的了解,所以我尝试查找它,但基本搜索并没有给我带来任何有用的东西。

上下文:我正在尝试这个问题的公认答案:An error building Qt libraries for the raspberry pi

建议运行以下脚本来调整 simlinks:

find . -maxdepth 1 -type l | while read i;
do qualifies=$(file $i | sed -e "s/.*\`\(.*\)'/\1/g" | grep ^/lib)
if [ -n "$qualifies" ]; then
newPath=$(file $i | sed -e "s/.*\`\(.*\)'/\1/g" | sed -e "s,\`,,g" | sed -e "s,',,g" | sed -e "s,^/lib,$2/lib,g");
echo $i
echo $newPath;
sudo rm $i;
sudo ln -s $newPath $i;
fi
done

但是,它没有做任何事情,所以我试图了解它应该如何工作。

find 找到很多文件,例如:

./libcap-ng.so.0
./libnettle.so.4
./libSDL-1.2.so.0
./libwebpmux.so.1
./libnss_nisplus.so
./libavahi-gobject.so.0
./libgdk-3.so.0
./librsvg-2.so.2
./libatk-bridge-2.0.so.0
./libgeoclue.so.0
./libdv.so.4
./libcdda_interface.so.0
./libheimbase.so.1
./libfontconfig.so.1
./libXinerama.so.1
./libopenal.so.1
./libicule.so.52 
./libaudio.so.2
./libmplex2-2.1.so.0

等等数十个其他文件,但它们似乎都不“符合”正则表达式。

最佳答案

在 Bash 中,双引号字符串 "..." 允许各种扩展,包括使用 $(...) 进行命令替换或`...`。例如,这个:

cat "fo`echo ob`ar"

相当于cat foobar,因为`echo ob`表示“运行命令echo ob并将其输出放在这里”。

因此,如果您想在双引号字符串中包含实际的 `,则必须用反斜杠引用它。这就是你的脚本正在做的事情。例如,sed -e "s,\`,,g" 表示 sed -e 's,`,,g',即“删除所有出现的`”。 (请注意,` 对于 sed 本身来说没有任何特殊含义;它只是匹配输入中的 `。相同的命令可以是写为 tr -d '`'。)

关于regex - 正则表达式中反斜杠后跟重音符号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33252052/

相关文章:

regex - 脚本 : How to capitalize a specific character of matched text in a substitution?

javascript - 需要正则表达式帮助使用 Javascript 解析 mediawiki 模板

regex - grep 只允许某些字符?

c# - 如何使用 C# 和正则表达式解析字符串?

c - 我的词法分析器遇到困难

sql - 测试正常时正则表达式无法正常工作

javascript匹配太多次

javascript正则表达式检查字符和数字以外的内容

java - 从 HTML 页面中获取特定行并将其放入 String 中

regex - 根据特定元素的位置在字符串向量中插入连字符或破折号