正则表达式以数字开头并以特定字符串结尾的记录

问题描述:

我使用下面的file_get_contents获得了一些结果。正则表达式以数字开头并以特定字符串结尾的记录

30049988.html" >Title1 
297816.html" >Title2 
2979922.html" >Title3 
29736.html" >Title4 
22833.html" >Title5 

我想删除丑陋的部分(number.html”>),并只获得标题,我怎么能实现呢?

+0

您正在处理的是HTML吗? – 2015-02-06 04:10:49

+0

我正在尝试在我最后一个问题中处理HTML,但放弃了,找到了使用strip_tags()返回结果的另一种方式() – salep 2015-02-06 04:39:34

你可以使用preg_replace功能。

preg_replace('~.*?>~', '', $string); 

DEMO

.*?会做的零个或多个字符的非贪婪匹配。

OR

preg_replace('~^\d+\.html" >~', '', $string); 
+0

谢谢!第一个解决了我的问题。 – salep 2015-02-06 04:09:14

+0

是的,这很简单... – 2015-02-06 04:09:47

preg_replace函数方法将工作,但回答其他任何人知道了原来的问题。

<?php 
$string = <<<EOF 
30049988.html" >Title1 
297816.html" >Title2 
2979922.html" >Title3 
29736.html" >Title4 
22833.html" >Title5 
EOF; 
preg_match_all('~[^>]+>([^\\n]+)$~smU', $string, $matches); 
if (!isset($matches[1])) { 
    echo 'No results found ..'. PHP_EOL; 
    exit; 
} 

foreach ($matches[1] as $match) { 
    echo $match.PHP_EOL; 
} 

你试试这个正则表达式。

(?=T)(\w+) 

这是如何工作的

  1. (?=T) - 这是一个积极的前瞻。它检查模式是否以T开始,然后才会继续下一步。
  2. (\w+) - 这组字来自于T

输出:

Title1 
Title2 
Title3 
Title4 
Title5 

Here is the regex in action