アプリケーションに含まれているファイルと含まれていないファイルを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,}(<|\")[^(>&\")]*(>|\")