2016-06-29 5 views
2

引用符で囲まれていない文字列を見つけるには正規表現が必要です。例:RegExp引用符で囲まれていない限り、行内の文字列を見つける

if (myString == System.String.Empty) // RegExp will find System.String 

しかし

myString = "This is my System.String.Empty String"; 

System.String.Emptyはスキップされます。

(?<!")System\.String(?!(["A-Za-z0-9])) 

それは両方のケースをキャッチしない:

は、これまでのところ私は、次の正規表現を書かれています。どの正規表現が最初のケースだけをキャッチしますか?

なぜ私はそれが必要なのかを説明するために、System.Stringのすべての名前をコードベース全体でちょうどstringに変更する必要がありますが、一部のコードではこの文字列が引用符で囲まれています。

を使用でき
+1

' "([A-ZA-Z0-9]) '(*?!。システム\ .String(?!)*。)"? –

+0

^^ [^ "] *(システム\ .String)[^" \ r \ n] * ' –

+0

@MariaDeleva、あなたの応答に感謝します。あなたの正規表現はlookahead/lookbehindを使用していないので、必要な文字列の前にすべてのものを含めています。 – worldpart

答えて

1

(?<!.*".*)System\.String(?!(["A-Za-z0-9])) 
+0

固定幅のlookbehindしか許されないので、これはほとんどのregexフレーバーでは機能しません。 PCREは私がこの正規表現を受け入れる唯一の味です。 – Aaron

+0

@Aaron良い点! –

+0

@Aaron Hm、さらに調査し、実際にすべての症例を見つけることはできません。それはほとんどのものを見つけることができますが、私が見つけられると予想されるものはスキップします。良い点.. – worldpart

関連する問題