簡體   English   中英

帶有正則表達式的遞歸匹配

[英]Recursive match with regular expression

我需要使用以下字符串拆分表達式:

'with', 'select', 'from', 'where'

這些將按照我寫的順序進行。 您可以假設每個單詞都以單詞邊界開頭和結尾。

我這樣做沒有任何問題。 但是,新的要求已經到來。 from子句可以包含一個完整的表達式。

這意味着,表達式可能是這樣的:

with
   something
select
   something more
from
   with
      aaaa
   select
      bbbb      
   from
      [may be another expression]
   where
      the inner expression ends here
where
   the outer expression ends here

我不需要拆分內部表達式。

現在的問題是,是否有一種標准的方法可以做到這一點? 還是我需要完全手動完成此操作?

我不確定這是否重要,我的應用程序是C#。

看來您的用例開始變得足夠復雜,以至於您最好花一些時間和精力進行重構以使用實際的解析實用程序,而不是正則表達式。 我不是C#程序員,所以我不能為您提供任何建議,但是使用Google搜索“ C#解析器庫”會產生一些看起來很有希望的鏈接。

如果您只需要固定級別的嵌套,那么我認為從技術上講,它可以在正則表達式中完成,但這會令人討厭。 可能最簡單的方法是為每個固定級別的嵌套編寫一個表達式,並從頂部開始匹配它們,直到獲得成功為止。 丑陋,但可以工作。

如果頂級表達式中可以包含的嵌套表達式數量不受限制,則正則表達式的功能不足以正常執行此操作,因此您需要查看解析實用程序。 我不會嘗試自己編寫一個解析器; 幾乎可以肯定,有可用的庫可以為您解決大多數棘手的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM