0

文字列の配列があります。

(102) Name3

(####)で始まる文字列を照合して、行のName部分を簡単に取得するにはどうすればよいですか。動作しない次のことを試しています。

if(preg_match("/(d+)/", $myArray[$i], $matches))
4

1 に答える 1

4

予想される入力文字列に含まれる括弧をエスケープする必要があります。

if(preg_match("/\((\d+)\) (.+)$/", $myArray[$i], $matches))

それが次の正規表現です。

  • /正規表現の開始 (これは任意の文字にすることができますが、通常は / です)
  • \(キャラクター (
  • (グループ 1 のキャプチャを開始します
  • \d任意の桁
  • +前の試合、1回以上
  • )キャプチャ グループ 1 の終了
  • 空間
  • (グループ 2 のキャプチャを開始します
  • .ほぼすべてのキャラクター
  • +前の試合、1回以上
  • )グループ 2 のキャプチャを終了します。
  • $文字列の終わり
  • /正規表現の終わり (最初の文字と一致する必要があります)

regular-expressions.infoでよりわかりやすい定義を見つけることができます。

上記の場合、一致には次のものが含まれます。

array(
    '(123) input string',
    123, // capturing group 1
    'input string' // capturing group 2
)
于 2012-10-04T05:50:15.450 に答える