任何機構可以告訴我如何使用正則表達式來否定字符串? 我想找到所有以public class
開頭的行,然後any thing except first,second
,最後還有別的。如何使用正則表達式否定字符串
例如在結果我期望看到public class base
但不是public class myfirst:base
可以任何身體幫助我??
任何機構可以告訴我如何使用正則表達式來否定字符串? 我想找到所有以public class
開頭的行,然後any thing except first,second
,最後還有別的。如何使用正則表達式否定字符串
例如在結果我期望看到public class base
但不是public class myfirst:base
可以任何身體幫助我??
這裏是什麼,應該爲你工作
/public\sclass\s(?:[^fs\s]+|(?!first|second)\S)+(?=\s|$)/
第二看頭,就能更改爲$(線結束)或其他錨適用於您的特定用例,例如可能是'{'
編輯:嘗試將最後一部分更改爲:
(?=\s|$)
它沒有工作niether – adra 2010-07-07 17:33:16
其他兩個答案都接近,但可能因不同原因失敗。
public\s+class\s+(?:(?!first|second).)+
注意如何周圍有負先行(非捕獲)組,以確保它不僅僅可應用於第一位置更。
,該組是限制較少 - 因爲.
排除換行,它的使用,而不是\S
和$
是沒有必要的 - 這將不包括指定的文字和匹配等。
沒有斜槓包裝表達式,因爲這些都不是必需的,可能會混淆那些只遇到基於字符串的正則表達式使用的人。
如果仍然失敗,請發佈錯誤匹配或錯過的確切內容以及您正在使用的語言/ ide。
更新:
原來你使用Visual Studio,它有它自己的special regex implementation,一些深不可測的原因。所以,你會想,而不是嘗試:
public:b+class:b+~(first|second)+$
我沒有測試該方式 - 如果它不工作,嘗試丟棄$
,但除此之外,你必須找到一個VS用戶。或者更好的是,VS工程師(s)負責這個愚蠢的非標準正則表達式。
如果彼得是正確的,你使用Visual Studio的Find
功能,這應該工作:
^:b*public:b+class:b+~(first|second):i.*$
:b
空格或製表符匹配
~(...)
是VS如何做一個負前瞻
:i
匹配C/C++標識符
其餘部分是標準正則表達式語法:
^
for beginn荷蘭國際集團線
$
的線路
.
結束的任何字符
*
零個或多個
+
一個或多個
|
的交替
爲了完整起見,您應該將「'| for alternation」添加到第二個鍵。 – 2010-07-08 14:00:38
完成。你知道,在VS正則表達式中實際上有一些好點子。這太糟糕了,它與其他Perl衍生的風格完全不相容。 – 2010-07-08 14:55:35
是的,像':i'這樣的東西看起來確實是一個好主意,但它確實應該以兼容的方式實現,或者標記得更清楚(例如在下拉列表中有「正則表達式(.NET)」和「正則表達式(VS風格)「或其他)。 – 2010-07-08 17:02:51
你在寫什麼語言? – SLaks 2010-07-07 16:57:58
你使用的是什麼正則表達式?這是一個非常好的學習正則表達式的資源:http://www.regular-expressions.info/lookaround.html – 2010-07-07 16:59:16
首先,**這是什麼語言? (JavaScript,PHP,C#等)?** 二,發佈的問題存在矛盾。它說你想找到「除第一,第二之外的任何東西」,但你的例子使用「myfirst」!這是什麼? 最後,這個字符串是多行嗎? – 2010-07-07 18:22:36