gpt4 book ai didi

regex - 删除 Perl 中两个引号之间的文本?

转载 作者:行者123 更新时间:2023-12-01 10:06:43 26 4
gpt4 key购买 nike

我以为我已经弄清楚了,但我想在一个文件中找到所有出现的地方,我在两个双引号之间有一些要删除的文本。

我需要先找到一个匹配项,然后获取从第一个双引号到匹配项的所有内容,然后是所有文本到第二个双引号并将其删除。我不想只在两个双引号之间获取文本,因为它可能不是我想要删除的文件中的内容。

我用的是这样的:

perl -p -i.bak -e s/bar/foo/g bar.xml

首先进行有效的查找和替换。然后我去了:

perl -p -i.bak -e s/..\/..\/bar\//g bar.xml

并且删除了 bar 之前的所有内容,但我需要一直继续到第二个双引号,但我不确定如何使用 Perl 来做到这一点。

我假设它会混入一些正则表达式,但我尝试过的都没有用。直到 bar 的部分将始终相同,但在那之后文本将发生变化,但是,它始终以我要删除的部分的第二个双引号结尾。在那之后将再次出现文本。

最佳答案

s/"[^"]*foo[^"]*"//g

如果实际引号之间没有转义引号,并且如果您想删除包含 foo 的带引号的字符串,则有效:

"      # Match a quote
[^"]* # Match any number of characters except quotes
foo # Match foo
[^"]* # Match any number of characters except quotes
" # Match another quote

关于regex - 删除 Perl 中两个引号之间的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589808/

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