GEDCOM ファイル形式を解析しようとしています。その標準によれば、CR と LF のすべての組み合わせは、改行を表すのに有効です。
これは行ベースの形式であるため、番号とタグが既に一致している場合に、行の残りの部分を一致させたい場合がよくあります。ルールの例は次のとおりです。
"NAME ".+ { /* deal with the name */ }
改行は
[\r\n]+ {return ENDLINE;}
これは、背後で \r\n を \n に変換するため、Windows では正常に機能しますが、Linux では機能しません。そこでは、\r をドットで一致させることができます。Flex は最長一致ルールを使用するため、データに \r を含めるか、既知のタグを UNKNOWNTAG ルールに一致させます。これは、技術的に正しい一致が 1 バイト長くなるためです。
解決策は、すべてのドットを [^\r\n] に置き換えることですが、それはエレガントではないようです。より良い方法はありますか?