0

コードを改善したいのですが、正規表現の書き方がわかりません。

タグ内の xhtml 属性以外をすべて取得したい。

だからプレグマッチの後、私は取得したい:

array(
  0 => "required",
  1 => "autocomplete"
);

$balise = <input id="myId" class="myClassA myClassB myClassC" required autocomplete/>;

これは実際に使ってますpreg_match_all("/(?<=\s)[\w]+(?=[\s\/>])/i", $balise, $attributs);

しかし、正規表現を使用すると、次のようになります:

array(
  0 => "myClassB",
  1 => "required",
  3 => "autocomplete"
);

もらいたくないmyClassB

正規表現を書くのを手伝ってくれる人はいますか?

どうも

4

1 に答える 1

1

否定先読み(?![^=]*?")を追加して、次の " が次の = に先行しないようにすることができます。これにより、引用符で囲まれた値内にない単語のみを取得できます。正規表現はそれを終了しません。

preg_match_all('/(?<=\s)[\w]+(?=[\s\/>])(?![^=]*?")/i', $balise, $attributs);
于 2013-07-25T13:15:43.280 に答える