2016-03-03 17 views
2

我想了解Solr的正則表達式和整個this Java文檔,其中解釋說,「正則表達式是由下面的抽象語法建」來了。|的使用和:==在Java文檔

我試圖按照各自的功能和運行快速測試,但有一個很難理解它的真正含義。

  1. 在Java文檔,他們已經使用了很多符號,包括|:==的,這是什麼意思?這是Java或Java文檔中的某種約定嗎?

  2. 貌似有四個「列」在那裏,就像是頂級類別的第一列和第二列是所有該類別下的選項。

+1

[BNF語法](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form)。 – Amadan

+0

@Amadan,然而,如果你看管道的第一次出現'regexp :: = unionexp |',那麼管道後面甚至沒有操作數,我應該理解「regexp被定義爲unionexp」只有或我應該實際上去一個額外的行「正則表達式定義爲unionexp或unionexp定義...」,或者它只是一個錯字,他們應該真的刪除管道。 –

+0

我同意@arcy認爲,通過正式語法是獲得正則表達式語法的難題。我會發誓我已經直接從Lucene看過類似的文檔,但[ElasticSearch文檔](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html #regexp-syntax)解釋了語法與更熟悉的Perl語法的區別。 – femtoRgon

回答

2

這些是形式語法中的符號; :==表示從符號開始生產,|表示邏輯「或」。基本思想是a :== b是一條規則,表明通過選擇這個規則可以產生'a'表示的東西,產生'b'。這聽起來沒有什麼用處,除非你已經研究過有關語法的東西。

'或'允許一條規則處理兩個作品,因此a :== b | c指示'a'可以產生'b'或'c'。

如果你不熟悉正則表達式,那麼從正式語法開始正確表達如何工作似乎還有很長的路要走。我會尋找另一種解釋。