【发布时间】:2016-11-21 19:13:28
【问题描述】:
我以为我知道一两件事……然后我遇到了 RegEx。 所以我想做的是多字符串负前瞻?那是一回事吗? 基本上我想找到第三个字符串何时存在但两个前导字符串不存在。
(?i:<!((yellow thing)\s(w+\s+){0,20}(blue thing))\s(\w+\s+){0,100}(green thing))
目标字符串:
- 这里有一个黄色的东西。这里我们有一个蓝色的东西。显然,绿色的东西是最好的。 (不应匹配)
- 你想买一些死亡棒吗?我有一个绿色的东西。 (比赛)
- 我们在一艘黄色的潜艇上?看那边那个绿色的东西! (比赛)
【问题讨论】:
-
你毁掉了后向,把它变成了一个带有内联修饰符的选项组。试试
(?<!yellow thing\W*(\w+\W+){0,20}\W*blue thing\W*(\w+\W+){0,100})green thing。可以在“事物”周围添加单词边界以仅匹配整个单词。
标签: .net regex negative-lookahead