2011-12-14 12 views
0

我目前正在Scala中編寫一個解析器,我希望將我的空白空間定義爲匹配兩個空格和java樣式的/* */評論。我不需要//部分。在java風格評論上使用正則表達式時堆棧溢出

目前我使用這樣的定義:

"""((\s+)|(?:/\*(?:[^*]|(?:\*+[^*/]))*\*+/))*""".r 

我發現大多數該定義的這個頁面上: http://ostermiller.org/findcomment.html

的問題是我的匹配輸入時,我得到一個計算器。然而,調整我的堆棧大小到1 MB可以解決問題。不幸的是,這在我的生產系統中不可能。 所以我要求的是,如果有人能幫我提高我的正則表達式?

幫助將不勝感激,因爲我只在正則表達式世界新手:)

在此先感謝。

問候Stefan。

回答

0

使用normal* (special normal*) *模式進行評論。你需要多行匹配。

這裏,special*後面沒有/normal是什麼,但*。不加引號,正則表達式爲

  • 特殊爲\*(?!/);
  • 正常值爲[^*]

我不知道斯卡拉,但你需要定義特殊的一個變種,變種一個正常,使用:

/\*<normal>*(<special><normal>*)*\*/

,這會吞噬你的空格不用擔心堆棧溢出。