gpt4 book ai didi

regex - 字符串模式匹配问题

转载 作者:行者123 更新时间:2023-12-04 12:49:47 25 4
gpt4 key购买 nike

想象一下,我们有一个包含子字符串“cat”和“dog”以及其他随机字符的长字符串,例如。

cat x dog cat x cat x dog x dog x cat x dog x cat

这里的“x”代表任何随机的字符序列(但不是“猫”或“狗”)。

我想要做的是找到每个“猫”,后跟除“狗”之外的任何字符,然后是“猫”。我想在每种情况下删除 'cat' 的第一个实例。

在这种情况下,我想删除带括号的 [cat],因为在下一个“猫”之前没有“狗”:
cat x dog [cat] x cat x dog x dog x cat x dog x cat

最终得到:
cat x dog x cat x dog x dog x cat x dog x cat

如何才能做到这一点?

我想以某种方式使用像 VonC 推荐的 (n)(?=(n)) 这样的正则表达式
here
(cat)(?=(.*cat))

匹配字符串中的所有 'cat' 对。但是我仍然不确定如何使用它来删除每只在“猫”之前没有跟在“狗”之后的猫。

我要解决的真正问题是在 Java 中。但我真的只是在寻找通用的伪代码/正则表达式解决方案。

最佳答案

您是否有任何特别的原因想要仅通过一次 RE 调用来执行此操作?我不确定在一个 RE 中这是否真的可行。

如果我必须这样做,我可能会两次通过。首先在字符串中标记 'cat' 和 'dog' 的每个实例,然后编写一些代码来确定需要移除哪些猫,并在另一轮中执行此操作。

伪代码如下:

// Find all the cats and dogs
int[] catLocations = string.findIndex(/cat/);
int[] dogLocations = string.findIndex(/dog/);
int [] idsToRemove = doLogic(catLocations, dogLocations);

// Remove each identified cat, from the end to the front
for (int id : idsToRemove.reverse())
string.removeSubstring(id, "cat".length());

关于regex - 字符串模式匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4045082/

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