2016-09-16 5 views
-1

グローバル変数を含むプロジェクトファイルを解析しようとしていますが、その中には複数のグローバル変数があります。他のグローバルとPHPのグローバル変数を一致

例:

global $ID, $NR, $USER; 
global $NR; 

私はそれらの間の唯一の$NR変数を見つけます。

私の正規表現:

global[?\w+($NR)+\s+?] 

この$ NRグローバルの多くを見つけることではなく。どうしましたか?

+0

[実際に何かを見つけますか(https://regex101.com/r/pC7oK5/1)? –

+0

['^ \ s * global \ s * \ $ \ w +(?:\ s * \ $ \ w +)*; $'](https://regex101.com/r/wK2hB2/1) – Tushar

+0

@WiktorStribiżewこれは$ NR – Nico

答えて

2

あなたは

^\s*global\s*\$\w+(?:,\s*\$\w+)*;$ 

は、この正規表現は関係なく、複数の変数宣言または単一のすべてのグローバルをキャプチャします使用することができます。

正規表現の説明:

  1. ^:ゼロ以上のスペース
  2. global:ライン
  3. \s*のスタート正確な文字列にマッチグローバル
  4. \$$にマッチしますシンボル。 RegExでは$の意味が異なるため、文字列にマッチするようにバックスラッシュで先行することでエスケープする必要があります。
  5. \w+:1つ以上の英数字と_の文字に一致します。 \w =
  6. (?:,\s*\$\w+)*
    • (?:...)[a-zA-Z0-9_]:非capturgingグループ
    • ,:マッチ,シンボル
    • \s*:グループに0回以上一致:ゼロ個以上の空白文字
    • (...)*
    • と一致します。
  7. ;:マッチ;シンボル
  8. $:行の終わりより良く理解するために正規表現鉄道ダイアグラムを追加

RegEx101 Demo

RegEx Railroad Diagram

注:セミコロンの後の末尾にスペースがある場合は、セミコロンの後と$\s*を追加します。

+0

鉄道図の作成方法は? –

+1

@PatrickMlr [Atom RegEx Railroad Diagram Plugin](https://atom.io/packages/regex-railroad-diagram)。 [online too](https://regexper.com/#%5E%5Cs*global%5Cs*%5C%24%5Cw%2B(%3F%3A%2C%5Cs %% 5C%24%5Cw)を作成することもできます。 %2B)*%3B%24)。 – Tushar