簡體   English   中英

使用正則表達式匹配不以> \\ s *結尾的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM