2017-03-08 44 views
0

我想在oCode文件中使用正則表達式從ooRexx中捕獲邏輯運算符,因爲我想要使用Atom編輯器支持ooRexx的語法高亮顯示。這些都是運營商我試圖掩蓋:如何使用正則表達式與cson

>= <= \> \<\=>< <> == \== // && || ** ¬> ¬< ¬= ¬== >> << >>= \<< ¬<< \>> ¬>> <<=

而且這是在cson文件中的正則表達式部分:

'match': '\\+ | - | [\\\\] | \\/ | % | \\* | \\| | & |=|¬|>|<| 
>= | <= | ([\\\\]>) | ([\\\\]<) | ([\\\\]=) | >< | <> | == | ([\\\\]==) | 
\\/\\/ | && | \\|\\| | \\*\\* | ¬> | ¬< | ¬= | ¬== | >> | << | >>= | ([\\\\]<<) | ¬<< | 
([\\\\]>>) | ¬>> | <<=' 

我用斜線(向前和向後),也掙扎與雙重**我的正則表達式的知識是非常基本的,很好地說。有沒有人可以幫助我呢?

+0

嘗試只反轉一次反斜槓,以便運算符中的每個'\'變成正則表達式中的'\\'。你也不需要'[]'。同時說明你遇到的實際錯誤。 –

回答

0

管道周圍有空間:這些空間以正則表達式計算。因此,當您寫入類似| \*\* |的東西時,雙星號會被捕獲,但如果它們被每邊的空間包圍,則不會被只有,而且如果它們被貼在單詞上或在行的開始/結尾處,則不是。與斜槓相同的問題 - 我測試了它,它似乎確實爲我抓住了它們,但只有當您的斜線(或星號)位於兩個空格之間時。

一些其他的事情要記住:

  • 你不應該需要大約反斜線的方括號;他們可以提供類別可能的字符匹配。例如,[<>]=將捕獲>=<=。編寫[\\]相當於直接編寫\\,因爲\\計爲單個字符,因爲第一個轉義反斜槓。同樣,這裏的括號沒有被使用;見grouping
  • 也想到使用repetition operators+*。因此\\>+將捕獲\>\>>
  • 最後,問號將幫助您避免重複,方法是將前一個字符(或方括號中的字符組)標記爲可選。 ==?將匹配===

您可以將這些三種技巧結合在一起使用您的語句很多......我會將這個練習留給您!

發展長期的正則表達式時,又一個提示 - 請使用萬用表像Regex101或測試文件類似於實時看到你的變化,像Regexper調試器將幫助您瞭解您的正則表達式是如何解析的。

+0

非常感謝。我不知道這些空格是正則表達式模式的一部分。現在我有它的工作。 – Atlantaner

+0

@Atlantaner太棒了!如果這對你有用[請將問題標記爲已解決](http://stackoverflow.com/help/someone-answers)。 – Victor