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

您好我有以下文字:</ p>

  file:/  home /dx/reader/validation-garage/IDON/test-test-test@2016-10-04.txt#/ 
</ code> </ pre>

我需要检索上面字符串中的test-test-test@2016-10-04.txt#</ code>。 如果我还可以更好地排除哈希。</ p>

我试过看这样的例子 Regex在第二个和第三个斜杠之间找到文本但是无法让它工作,有人可以帮忙吗?</ p>

我正在使用PHP正则表达式来执行此操作。</ p>
</ div>

展开原文

原文

Hi I have the following text:

file:/home/dx/reader/validation-garage/IDON/test-test-test@2016-10-04.txt#/

I need to retrieve test-test-test@2016-10-04.txt# from the string above. If I can also exclude the hash even better.

I've tried looking at examples like this Regex to find text between second and third slashes but having trouble getting it working, can anyone help?

I'm using PHP regex to do this.

dongyue934001
dongyue934001 [^\/]+\/$会给你test-test-test@2016-10-04.txt#/
大约 4 年之前 回复
dourou9477
dourou9477 你的意思是任何有@中的部分或者只是路径的最后部分或者是什么?
大约 4 年之前 回复

3个回答



您可以尝试下面的正则表达式</ p>

  \ /([az \  - ]  * \ @ [0-9 \  -  \。] * [az] {3} \#)\ / 
</ code> </ pre>

这里有一个工作示例: https://www.regex101.com/r/RYsh7H/1 </ p>
\ n

说明:</ p>

  [az \  - ] * =&gt; 将测试测试部分与小写匹配,并且可以包含dahses 
\ @ =&gt; 匹配常数@ sign
[0-9 \ - \。] * =&gt; 匹配文件名与数字,短划线和{点}
[a-z] {3} \#=&gt; 匹配您的3个字母的扩展名和#
</ code> </ pre>

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

希望这有帮助; </ p>
</ div>

展开原文

原文

You may try regex expression below

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

A working example is here: https://www.regex101.com/r/RYsh7H/1

Explanation:

[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: If you really do not need # you do not have to use regex. And you may consider using parse_url method of PHP.

Hope this helps;

dougui5419
dougui5419 欢迎您@ olliejjc16
大约 4 年之前 回复
doujia7779
doujia7779 这很完美,谢谢!
大约 4 年之前 回复



basename()</ code>也有效,所以你也可以这样做:</ p>
\ n

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

展开原文

原文

basename() also works, so you can also do like this:

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



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

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

或更好:</ p>

  $ 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));
</ code> </ pre >
</ div>

展开原文

原文

Without regex you can do:

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

or better:

$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));

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐