簡體   English   中英

Lex:在多行中分解長正則表達式

[英]Lex: Breaking up long regular expressions over multiple lines

在.l文件中的多行上打破長lex正則表達式的正確語法是什么?

例如,假設我有一個正則表達式,例如:

word1|word2|word3|word4  ECHO;

當我嘗試這樣做時:

word1|word2|
word3|word4  ECHO;

我得到一個錯誤。 在lex的多行中分解正則表達式的正確方法是什么?

使用flex(作為標准lex語法的擴展),您可以使用(?x:…)語法,類似於PCRE / Perl擴展語法。 請注意,與PCRE不同,x標志所應用的文本用括號括起來。 [注1]。

在括號內,注釋和空格將被忽略,除非將其轉義或引用。 所以你可以這樣寫:

(?x:
   word1 |
   word2 |
   word3 |
   word4 )    ECHO;

注意:此語法不能在“定義”部分中使用,只能在“規則”部分中使用。 我不知道這是設計使然,還是未來的增強功能可能會解除限制。

有關更多詳細信息,請參見flex手冊 (在以“(?rs:pattern)”開頭的部分中)


筆記

  1. 在PCRE中(即python),您將編寫(?x) --- extended regex ,並且擴展將一直持續到regex的末尾,除非您將其關閉。 我什至不會嘗試解釋Perl用於檢測擴展正則表達式結尾的規則。

暫無
暫無

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

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