2013-09-26 51 views
1

我有這樣三個字符串:寫regexpression「不包含」

xhtml.AddHtml(g_Lang.Text(Id,L_EXPORT_IS_NOT_SUPPORTED_FOR_THIS_ELEMENT), false); 
xhtml.AddHtml(g_Lang.Text(Id, L_EXPORT_IS_NOT_SUPPORTED_FOR_THIS_ELEMENT), false); 
sGradeTitle = g_Lang.Text(CustomerID, nTitle, LanguageID); 

我想寫regexpression它接受第三行和不接受的第一和第二:

.*g_Lang\.Text\(\s*[A-Za-z]*,\s*[here must be not L_].* 

這是我試過的,你能幫我糾正嗎?

+2

什麼語言是您使用?此外,你可能會查找負面的預測。 – Jerry

+0

@Jerry我使用powershell,我試圖使用(?!L_),但它不能正常工作 – mtkachenko

+0

好吧,除了'g_Lang.Text('在你的正則表達式中是可選的,所以它會匹配任何以該開頭的字符串。你應該考慮用'+'來切換第三個'*',然後使用'(?!L_)'。 – Vince

回答

5

您在正確的軌道上,您只需要使用(?!.*L_)而不是(?!L_)。那裏的.*會在任何地方檢測到L_

.*g_Lang\.Text\(\s*[A-Za-z]*,\s*(?!.*L_).* 

您還可能要到第一貪.*轉換成懶以提高性能一點點(通過減少回溯數):

.*?g_Lang\.Text\(\s*[A-Za-z]*,\s*(?!.*L_).*