アプリケーションに含まれているファイルと含まれていないファイルをmiに通知する小さなプログラムを作成しようとしています。私はこの正規表現を使おうとしました:
#include (<|")([^\r\n;#">]*)(>|")
それはうまく機能しますが、正しい出力として間違った出力を取得します:
#include <stdio.h"
これはCコンパイラでは不可能です。だから質問は:誰かが私の正規表現を正しく編集する方法を知っていますか?助けてください。
#include (?:<([^\r\n;#">]*)>|"([^\r\n;#">]*)")
したがって、受け入れる代わりに、またはを受け入れ[<"]x[>"]
ます。例。<x>
"x"
私はさまざまな方法で試しましたが、簡単な方法はないようです。少なくともそれはわかりませんでした。
#include (<|")([^\r\n;#">]*)(\1)
"cstdio"
ええ、それはどちら
にとっても本当にうまくいき<cstdio>
ます。失敗。#include (<(?=[^\r\n;#">]*>)|"(?=[^\r\n;#">]*"))([^\r\n;#">]*)(>|")
<
かを確認します。"
重い。#include (<[^\r\n;#">]*>|"[^\r\n;#">]*")
<...>
または
がある場合は、両方のケースを確認してください"..."
。より良い答えを待って、私も興味があります。私が考えているビット、これはすでにうまくいくでしょう。
PS:ケース2と3[^\r\n;#">]*
では、別の文字列に保存して、正規表現の他の部分に連結する方がよいでしょう。
#include\s{1,}(<|\")[^(>&\")]*(>|\")