【发布时间】:2012-12-31 10:58:09
【问题描述】:
下面的文本是使用正则表达式从一个巨大的文本中过滤出来的,我必须在其中找到包含 dog 和 cat 而没有 porc 和 pig 的句子。
What, a Dog, a Rat, a Mouse, a Cat to scratch a man to
Where Iuliet liues, and euery Cat and Dog,
Which first (perchance) shee'l proue on Cats and Dogs,
glass, and from setting up memorials of departed cats and dogs.
Thinking,' etc., 1873, p. 82.), "A dog frames a general concept of cats or
dog, who never passed a cat who lay sick in a basket, and was a great
为了找到上面的内容,我使用了正则表达式:
^(?!.\*porc.\*)(?!.\*pig.\*)(?=.\*\bdog\b.\*)(?=.\*\bcat\b.\*).\*
现在,我必须在 dog 和 cat 之间找到包含 3 个或更多字符的单词。
我试过了:
^(?!.\*porc.\*)(?!.\*pig.\*)(?=.\*\bdog\b.\*)(?=.\*\bcat\b.\*)dog(?:\s?\w{3,})+cat
它不起作用。
有人知道如何解决吗?
【问题讨论】:
-
在给定的示例文本中,您究竟想检索什么?我不是很清楚。如果您可以显示一些示例输出...
-
根据我的经验,当涉及到复杂的逻辑(例如在其他单词之间搜索单词)时,正则表达式不是一个好工具。我建议使用不同的工具来提取所需的子字符串,然后将简单的搜索正则表达式应用于每个子字符串。
-
您可以使用
indexOf来检查而不是在正则表达式中环顾四周。如果字符串有多个dog和cat,您的预期输出是什么?
标签: regex regex-negation regex-lookarounds