变量路由的正则表达式

时间:2018-01-27 18:38:40

标签: regex

我有以下目录: 的 视频/普通/项目/ Project01 / video.project_01.StatusOK / video.project_01.StatusOK.csproj

正则表达式,我只用提取路径的最后一部分 video.project_01.StatusOK.csproj em> )如下:

(适用[\ W |。] )/项目/([\ W |。| \ S] )/([\ W |。| \ S] ) /([\ W |。| \ S] )([。] *)

问题是如果路由不同,那就是之前有一个目录:video.project_01.StatusOK.csproj,例如: Videos / common / Project / Project01 / video.project_01.StatusOK /test/video.project_01。 StatusOK.csproj ,我会提取 ' test'

让我们看看是否有人可以帮助我使用java的正则表达式,总是提取包含 ' .csproj' ,无论路线如何。

问候,非常感谢

3 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

(?<=\/)[^\/]+csproj

Click for Demo

See JAVA code HERE

<强>解释

  • (?<=\/) - 在/
  • 之后立即查找位置的正面观察
  • [^\/]+ - 匹配任何非/
  • 字符的1次出现
  • csproj - 按字面意思匹配csproj

答案 1 :(得分:0)

如果你不知道,Java 7引入了NIO2,它带来了一个新的接口java.nio.file.Path。您可以拆分目录的路径,然后在路径的每个部分使用正则表达式。

Oracle的 Java教程有一个关于Path Operations

的部分

(还有一个关于正则表达式的部分

答案 2 :(得分:0)

如果您想继续使用路径中的/Project/,可以试试这个:

.*?/Project/.*?(?<=\/)([\w+. ]+\.csproj)$

那就匹配

  • 匹配任何字符零次或多次非贪婪(.*?)
  • 匹配/Project/
  • 匹配任何字符零次或多次非贪婪(.*?)
  • 积极的观察,断言前面的东西是正斜杠(?<=\/)
  • 捕获论坛( 这将包含您的匹配
  • 将匹配一个或多个单词字符,点或空格[\w. ]+一次或多次的字符类
  • 匹配.csproj \.csproj
  • 关闭捕获组)
  • 字符串$
  • 的结尾