需要Regexp帮助PHP

时间:2011-12-09 22:12:35

标签: php regex preg-match

我有例如这样的字符串 - “第7道”或“第7道其他一些词”或“第8道字”。

我需要第一次出现数字,所有其他下一个符号出现在第一次出现的空间。

因此,对于上面的例子,我需要这样的值“7-th”,“7th”,“8-th”。

然后从像“7-th”这样的比赛中,我需要在其他操作中仅提取数字。

提前致谢!

3 个答案:

答案 0 :(得分:4)

正则表达式应为/(\d+)([^\d]+)\s/,数字将解析为$1,结束字符将解析为$2

示例代码:

$string = '7-th Road';
preg_match_all('/(\d+)([^\d]+)\s/', $string, $result, PREG_PATTERN_ORDER);

var_dump($result[1]);
array(1) {
  [0]=> string(1) "7"
}

var_dump($result[2]);
array(1) {
  [0]=> string(1) "-th"
}

答案 1 :(得分:0)

你在问这样的事吗?

#(\d+)-?(?:st|nd|rd|th)#

Example

答案 2 :(得分:0)

如果您想从文本中获取数字,请使用它:

preg_match_all('/(\d+)[th|\-th]*?/','7-th", "7th", "8-th', $matches);

但是如果你想删除n#39; th'或其他只是做替换:

preg_replace('/(\d+)[th|\-th]*?/','$1', 'some string')

不确定最后一个......