gpt4 book ai didi

regex - PCRE 正则表达式替换双引号内的文本模式

转载 作者:行者123 更新时间:2023-12-02 03:36:37 26 4
gpt4 key购买 nike

在 Notepad++ 6.5.1 中,我需要替换引号对中的某些模式。我想将替换保存为宏的一部分,因此所有替换都需要一步完成。

例如,在下面的字符串中,将引号对中的所有“a”字符替换为破折号,而引号对外的字符保持不变:

输入:aa"bbabaavv"kdjhas"bbabaavv"x

期望的结果:aa"bb-b--vv"kdjhas"bb-b--vv"x

请注意,引号是成对匹配的,因此 kdjhas 中的“a”未被触及。

到目前为止,我已尝试搜索 (?:"[^"a]*|\G)\Ka([^"a]*) 并替换为 -$1,但这只是替换所有 a,结果为 --"bb-b--vv"kdjh-s"bb-b--vv"x。我正在尝试 PCRE 正则表达式,它将让我递归地替换引号分隔的文本。

编辑:引号字符串中的引号用额外的引号转义,例如“”。但是,假设我已经在之前的传递中用一个特殊字符替换了这些。因此,此问题的正则表达式解决方案不必处理转义引号。

最佳答案

很难判断这是否可行,因为您只提供了一行输入文本。

但假设输入遵循这种模式:

BOL|any text|string with two groups of a's|any text|string with two groups of a's|any text|EOL
aa "bbabaavv" kdjhas "bbabaavv" x

我能够创建这个正则表达式搜索字符串:

^(.+?\".+?)([a]+)(.+?)([a]+)(.*?\")(.+?\".+?)([a]+)(.+?)([a]+)(.*?\".*)$

用这个替换字符串:

\1-\3-\5\6-\8-\A

它会把你的输入字符串变成这样:

aa"bbabaavv"kdjhas"bbabaavv"x

进入这个:

aa"bb-b-vv"kdjhas"bb-b-vv"x

现在,如果输入与所描述的模式不同,搜索替换将自然失败,因为搜索正在寻找两组引用字符串中的那四组 a。

我还使用 Zeus 测试了该正则表达式,它可以创建包含 9 个以上组的正则表达式。

如您所见,正则表达式需要 10 个组。

我对 Notpad++ 不熟悉,所以我不知道它是否支持那么多组。

关于regex - PCRE 正则表达式替换双引号内的文本模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23050179/

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