2012-09-26 51 views
1

我正在Eclipse中使用其RegEx搜索功能搜索大型代碼庫。我需要找到沒有src屬性的<script>標籤。我是新來的正則表達式,但已經能夠破解的東西在一起:正則表達式匹配行的任何部分

^.*(^<script(?!.*src).*)$ 

這符合我要找的標籤,但前提是什麼就行了<script>標記之前。如果有空格或任何內容,則不匹配。

匹配正確:

<script type="text/javascript"> 

不符合:

 <script type="text/javascript"> 

如何修改我的表達,使其在該行的任何部分相匹配?

我也嘗試過預計^,\s*,[ ]*(?x)沒有成功。

+0

我不知道我按照問題完全,但你嘗試過'(<腳本(?!。* SRC) 。*)'? – user1201210

+1

Just ^。*( Luca

+0

@Luca,這很棒!請將其發佈爲答案 – Brad

回答

1

安全的方式是使用正則表達式(<script\b(?![^>]*\bsrc=)[^>]*>)

+0

謝謝。你能解釋爲什麼這是比@Luca發佈的更好的方法嗎? – Brad

+0

@Brad - 考慮輸入像''文本 text text''。 Luca的正則表達式不會找到任何匹配,因爲前面有'src',它屬於第二個'script'標記。在ideone.com/kohwm上查看演示 –

1

您近了,但可以簡化爲<script(?!.*src.*)>

您並不是真的對行的開始或結束感興趣,所以不需要包含這些方面。

順便說一句,那是第二個^這是拋棄你。

+0

謝謝Jay。不幸的是,這並不符合我所尋找的所有標籤。 @ Luca對'^。*( Brad

+0

+1爲解釋! – Brad

1

只需使用^.*(<script(?!.*src).*)$