你可以使用這個表達式:
/\*[\s\S]*?\*/(*SKIP)(*FAIL)|//.*(*SKIP)(*FAIL)|'(.*?)'
Working demo
這個表達式的想法是匹配你不想和使用標誌(*SKIP)(*FAIL)
丟棄的東西。使用這種技術通常稱爲「丟棄術」您使用的是要排除這樣的模式鏈條如下:
/\*[\s\S]*?\*/(*SKIP)(*FAIL) <--- Discard everything block comments
| or
//.*(*SKIP)(*FAIL) <--- Discard everything single comments
| or
'(.*?)' <--- Keep everything withing single quotes
在PCRE正則表達式的情況下,你可以使用(*SKIP)(*FAIL)
優勢說排除一切匹配此模式。
在另一方面,正則表達式引擎不使用正則表達式的技巧,包括以下或模式的支持,這些標誌也可以達到同樣丟棄的技術:
exclude this | another pattern to exclude | (save this content)
對於我張貼的正則表達式,如果你要達到相同的其他正則表達式引擎,你可以使用這個表達式:
/\*[\s\S]*?\*/|//.*|'(.*?)'
所有要排除的模式是在左邊,它們是由手術室隔開。最重要的是,你有一個能夠匹配你想要的捕獲組。一個簡單的方法,看看這是在使用debuggex圖:
由於Bark Kiers在此評論指出,我正則表達式匹配單引號內的內容,也不會明確匹配match this string
。因此,爲了配合match this string
你可以改變正則表達式:
/\*[\s\S]*?\*/(*SKIP)(*FAIL)|//.*(*SKIP)(*FAIL)|match this string
@vks:_「我只希望看到兩場比賽的'符合此string'(最後兩個不在評論) 「_ – Sam 2014-10-17 20:00:00
這樣的東西呢:'return'/ *匹配這個字符串* /';' – 2014-10-17 20:10:23