[英]Match line that doesn't end with >\s* using regular expression
我們可以使用不以模式結尾的正則表達式匹配一行 -
>\s*
換句話說, > \\ s * $匹配以>結尾的行,后跟零或更多空格。 我想找到那些與之不匹配的行。
我將在ANT構建期間使用它刪除一些行。
解決方案 ^(?!。 > \\ s $)。*由zx81提供
補充:基本上我正在嘗試在構建期間刪除songle行注釋。
(?<!http:|https:)\/\/.*$
以上正則表達式能夠做到這一點(我正在考慮引號內沒有評論)。 但我不想捕捉 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - No match
<% // END: Modified %> - No match
例
http://example.com - No match
abc // qqqqqqqqqq - Match
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - No Match
// comment - Match
/* comment */ program //comment - Match
var ok = "not really"; - No Match
<% // END: Modified %> - No match
這是我的目的。 對不起,我在問了原來的問題后補充了這個條件。 你們也可以幫助我嗎?
基於zx81提供的解決方案 - 正如以下正則表達式工作 -
^(?!<!DOCTYPE[^>]*>\s*$)(?!<%[^>]*%>\s*$).*(?<!http:|https:)\/\/.*$
但它匹配整條線。 但我只想在//之后捕獲字符串
但是我原來的問題已經回答了,我接受了答案。
在多行模式下使用它(非Ruby風格的m
標志):
^(?!.*>\s*$).*
查看演示中的匹配項
要設置m
標志,取決於風味:( (?m)^(?!.*>\\s*$).*
或/^(?!.*>\\s*$).*/m
(?m)^(?!.*>\\s*$).*
/ /^(?!.*>\\s*$).*/m
說明
(?m)
打開多行模式,允許^
和$
匹配每一行 ^
anchor斷言我們位於字符串的開頭 $
anchor斷言我們在字符串的末尾 (?!.*>\\s*$)
斷言后面的內容不是任何字符>
,可選空格和行尾 .*
匹配該行 編輯問題的選項2
同樣的想法,兩個外觀。
^(?!<!DOCTYPE[^>]*>\s*$)(?!<%[^>]*%>\s*$).*
參考
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.