【发布时间】:2011-05-01 23:58:46
【问题描述】:
假设我们有一个长字符串,其中包含子字符串 '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”对。但我仍然不确定如何使用它来删除每只在 'cat' 之前没有跟随 'dog' 的猫。
我要解决的真正问题是 Java。但我真的只是在寻找一个通用的伪代码/正则表达式解决方案。
【问题讨论】:
-
嗨。了解您使用的语言会很有用。
-
@klausbyskov:你确定那个编辑吗?以下两句话和例子在我看来似乎表明“跟随”确实是他的意思。
-
我的意思是“跟随”而不是之前!
-
对不起那些家伙。我的错。
标签: regex string pattern-matching