PHP正则表达式:获取下划线之间的数字

时间:2015-08-15 09:48:43

标签: php regex

我有一个正则表达式的问题,似乎没有按照我想要的方式解决。

以下是(不同的)输入字符串的两个示例:

  • 1111_market1233_的 700x100 _BLU
  • 1111_market232_的 8000x000 _AES
  • 1111_market11_的 689x41777 _CER

当然,由于不了解正则表达式的最佳知识,我不能因为不同的原因而得到文本的大胆部分。以下是我这样做的例子:

preg_match("/_([^0-9])x([^0-9])_/", $input_line, $output_array);

当然,这不起作用。我想要的预期输出是:

  • 700x100
  • 8000x000
  • 689x41777

1 个答案:

答案 0 :(得分:1)

你几乎得到了它。只需添加重复内容即可删除^

/_([0-9]+)x([0-9]+)_/
字符集中的

^使得该集匹配任何内部的内容。 Aka [^0-9]会匹配任何不是数字的东西。

字符集本身也只匹配一个字符。 Aka [0-9]只匹配一位数。 +表示匹配1次或更多次

<小时/> 如果要从匹配中删除下划线,可以使用positive lookahead and lookbehind。这将使正则表达式只是验证它们在那里,而不是将它们包括在匹配中:

/(?<=_)([0-9]+)x([0-9]+)(?=_)/

See it in action