如何编写一个正则表达式,它将匹配以I
开头的所有单词,但单词Integer
除外?如何匹配以“I”开头但不是“Integer”一词的单词?
实施例:
t1: Integer;
t2: Interface;
t3: IXml;
结果应该是Interface
和IXml
。
如何编写一个正则表达式,它将匹配以I
开头的所有单词,但单词Integer
除外?如何匹配以“I”开头但不是“Integer”一词的单词?
实施例:
t1: Integer;
t2: Interface;
t3: IXml;
结果应该是Interface
和IXml
。
这应该这样做:
I(?!nteger\b)\w+
...虽然佩德罗,不幸的是,并没有指定他有哪种正则表达式。并非所有的正则表达式库都支持负向预测。 – 2010-07-21 14:56:16
您应该删除\ w,因为它与de semicolumn不匹配;在例子中给出。 – Toto 2010-07-21 14:56:55
@ M42:分号无意匹配。 – SilentGhost 2010-07-21 15:02:47
如何:
I(?!nteger).*
如果您不能使用作为SilentGhost建议先行断言,您可以使用基本的正则表达式表达了同样的语法:
I(\b|[A-Za-mo-z][A-Za-z]*|n(\b|[A-Za-su-z][A-Za-z]*|t(\b|[A-Za-df-z][A-Za-z]*|e(\b|[A-Za-fh-z][A-Za-z]*|g(\b|[A-Za-df-z][A-Za-z]*|e(\b|[A-Za-qs-z][A-Za-z]*|r[A-Za-z]+))))))
它应该匹配单个“我”还是不匹配? – MikeD 2010-07-21 14:53:23
无论如何,这里有很多微不足道的问题,而且这个问题有点棘手,因为你必须向前看,然后“重新消费”你看到的同样的信件。 – mquander 2010-07-21 14:54:21
@ back2dos - 除了粗鲁和击败本网站的目的之外,所发布的一个答案清楚地表明,尽管并不困难,但解决方案与您声称的一样微不足道。 – adamk 2010-07-21 14:54:35