0

我有一个字符串数组。

(102) Name3

如何匹配以 (####) 开头的字符串并轻松获取行的名称部分。我正在尝试以下不起作用。

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 回答