正则表达式 - 选择中间

时间:2018-04-24 14:09:40

标签: regex

我有以下字符串:

c:\logs\xxxx\yyyy.log

“xxxx”和“yyyy”都可以是任何长度和任何字符的任何字符串。

我需要选择“xxxx”部分。 到目前为止,我有以下正则表达式:

[^c:\\logs\\](.*)[\\]

输出:

xxxx\

但是,我在输掉最后一个“\”

时遇到了困难

1 个答案:

答案 0 :(得分:0)

假设"xxxx""yyyy"可以是 除反斜杠 之外的任何字符,这将匹配"xxxx"部分:

(?<=^c:\\logs\\)[^\\]*(?=\\[^\\]*\.log$)

请参阅live demo

此正则表达式匹配所有前缀为"c:\logs\"的非反斜杠字符,后跟非反斜杠字符,然后".log"

顺便说一句,您[^c:\\logs\\]的尝试是以错误的方式使用字符类 - [^c:\\logs\\]表示“不是c:\logs之一的任何单个字符”