2016-05-17 7 views
1

ラテックス文書の引用符を置き換えたいと思います。これはドイツ語で書かれています。つまり、すべての引用符は "'text' 'の形式でなければなりませんが、文書の一部の編集者は" text "、" text "を使用しています。 ここで問題になるのは、文書にlstlisting環境を使って強調表示されたコードが含まれているということです。そこに引用符を置き換えてはいけません。 、私も(この場合は「ASDF」)の文字列にマッチする正規表現を、持っている正規表現は一致しますが、ラテックス環境では一致しません

((``((\w+\s*)+)'')|("((\w+\s*)+)")) 

は、私は複数の単語がある場合でも、不要な引用符内のテキストに一致する正規表現を、持っていますそれはlstlisting環境内にない場合にのみ:

"asdf"(?=((?!\\end\{lstlisting\}).)*\\begin\{lstlisting\}?) 

彼らは自分自身で正常に動作しますが、私はこのようにそれらを結合する場合:

((``((\w+\s*)+)'')|("((\w+\s*)+)"))(?=((?!\\end\{lstlisting\}).)*\\begin\{lstlisting\}?) 

引用符で囲まれた文字列の一部は一致していてはならず、さらにドキュメント全体が一致しています。

PS:私は現在、notepad ++を使用しています。それは限り、私は一つの言葉に最初の部分を制限するよう、正常に動作します:

((``((\w)+)'')|("((\w)+)"))(?=((?!\\end\{lstlisting\}).)*\\begin\{lstlisting\}?) 
+0

*それらは、単独ではうまく動作しますが、それらを組み合わせると、*うまく動作します - 組み合わせて実行しないでください。 –

+0

最初の正規表現で見つかった文字列と一致させたいが、2番目の正規表現で制約されている場合のみ、それらを組み合わせる必要がある。 – Mopsi

+0

あなたは '((\ {\\ end {{lstlisting \}))?((((\)+) ')))(? )* \ begin \ {lstlisting \}?) 'は一単語でうまく動作します。しかし '\ w +'は一つの単語にマッチします。 * \\ begin \ {lstlisting \}?)?(\\ begin \ {lstlisting \}?)?) ' –

答えて

0

空白を含む単語を一致させるには、あなたが

(``[\w\s]+''|"[\w\s]+")(?=(?:(?!\\end\{lstlisting\}).)*\\begin\{lstlisting\}?) 
を使用することができます\ nは

[EDIT]を一致させます

だけ``''の間にスペースを持っている、または"秒の間、あなたは0123をアンロールする必要がある場合regex demo

を参照してください。部分は\w+(?:\s+\w+)*となります。

関連する問題