2017-05-20 6 views
-2

PhpStorm内から正規表現検索を実行したいのですが(Double/Total Commanderで正規表現検索も同様に扱えます)引用符とそれに応じて文字列の補間は、それらの上で動作しません'$var'。ファイルの内容はこのようなものになるだろう一重引用符で誤って使用されているphp変数を見つける

$var = 'Hello world!'; 

echo 'Lorem ipsum $var dolor sit amet'; // Match this. 
echo "Lorem ipsum 'dolor sit amet $var consectetur' adipiscing elit"; // But not this. 
echo "Lorem ipsum 'dolor sit amet \$var consectetur' adipiscing elit"; // Or this. 

私は正規表現検索が最初の文に一致するようにしたいが、第二ま​​たは第三のではありません。

私は'[\w ]+\$[\w]+[\w ]+'を試しましたが、二重引用符またはエスケープドル記号に関係なくすべての文に一致するため、動作しません。 (regex101)。

これはバグのあるコードを見つけるために私のレポで実行したい正規表現検索です。

どの正規表現を使用できますか?あなたが必要なもの

(私はエスケープされていない単一引用符の間には、引用符の間にちょうどPHPの変数を任意のテキストを取得する必要はありません。)

+0

の可能性のある重複した[正規表現:引用符の間つかむ値](http://stackoverflow.com/questions/171480/regex-grabbing-values-between-quotation-marks) – ShiraNai7

+0

Iをあなたが必要とするものはまったく分かりません。非常に不明です。 –

+0

最後に '(?![\ w $ '] +") 'を追加するだけです(' \ w $' 'は文字列内で唯一の文字です)? – horcrux

答えて

1

は負の前後参照です。具体的には、負の先読み、PHPであなたは無固定長の後読みを使用することはできませんので:

'[\w ]+\$[\w]+[\w ]+'(?![\w$ ']*") 

(?![\w$ ']*")は、任意の数で、あなたが一致する文字列が"が続いてはならないことを意味し真ん中に文字(文字列で許可したい文字)を挿入します。

も参照してください:http://www.regular-expressions.info/lookaround.html

関連する問題