正则表达式在两个特定正斜杠之间提取字符串

时间:2016-10-04 10:48:32

标签: php regex

您好我有以下文字:

CoreGraphics

我需要从上面的字符串中检索file:/home/dx/reader/validation-garage/IDON/test-test-test@2016-10-04.txt#/ 。如果我还能更好地排除哈希。

我已经尝试过查看这样的例子Regex to find text between second and third slashes,但是无法让它工作,有人可以帮忙吗?

我正在使用PHP正则表达式执行此操作。

3 个答案:

答案 0 :(得分:1)

您可以尝试下面的正则表达式

\/([a-z\-]*\@[0-9\-\.]*[a-z]{3}\#)\/

这里有一个工作示例:https://www.regex101.com/r/RYsh7H/1

说明:

[a-z\-]* => Matches test-test-test part with lowercase and can contain dahses
\@ => Matches constant @ sign
[0-9\-\.]* => Matches the file name with digits, dashes and {dot}
[a-z]{3}\# => Matches your 3 letter extension and #

PS:如果你真的不需要#,你不必使用正则表达式。你可以考虑使用PHP的parse_url方法。

希望这会有所帮助;

答案 1 :(得分:0)

如果没有正则表达式,你可以这样做:

$url_parts = parse_url('file:/home/dx/reader/validation-garage/IDON/test-test-test@2016-10-04.txt#/');
echo end(explode('/', $url_parts['path']));

或更好:

$url_path = parse_url('file:/home/dx/reader/validation-garage/IDON/test-test-test@2016-10-04.txt#/', PHP_URL_PATH);
echo end(explode('/', $url_path));

答案 2 :(得分:0)

basename()也有效,所以你也可以这样做:

echo basename('file:/home/dx/reader/validation-garage/IDON/test-test-test@2016-10-04.txt#/');