2010-01-27 46 views
3

我有这样一个路径:如何用正则表达式获得前一个单词?

C:\ Development.TFS \ Examn \ R4分支\网络\ OrganisationManager \主题\蓝色\ CSS

我需要一个正则表达式得到了这个词“蓝色“。我试过了,但还没有找到解决方案。它实际上是从该字符串的最后一个单词之前得到该单词。 请帮忙, 谢谢

+0

你应该说明你所使用的语言。 – ghostdog74 2010-01-27 08:26:44

回答

6
(\w+)\W+\w+$ 

匹配倒数第二个单词,将其捕获到反向引用编号中。 1,然后匹配一个或多个非单词字符,然后匹配最后一个单词,然后匹配EOL。

如果你真的不希望实际的话,但路径元素匹配(即使它们包含非字字符),然后

([^\\:]+)\\[^\\]+$ 

可能做得更好。

编辑:添加:到“倒数第二个字的组”,因此正则表达式也可以处理相对路径。

+1

路径元素包含非单词字符,例如'R4分支'包含' - '。所以你的正则表达式不匹配'C:\ Development.TFS \ Examn \ R4分支\ Web \ OrganisationManager \ themes \ blue-sea \ css' – Rorick 2010-01-27 08:14:49

+0

你说得对。然而,OP要求提供文字,而不是路径元素(他可能指的是)。将编辑。 – 2010-01-27 08:20:10

+0

+1为更新的正则表达式。 – Amarghosh 2010-01-27 08:23:43

0

你应该在字符串中找到这个模式:([\w\s.-]+)\\[\w\s.-]+$。第一组将在您的案例中包含单词“蓝色”。正则表达式和访问组的精确语法取决于你的编程语言。

+2

'\ d'是'\ w'的一个子集,所以'\ w \ d'是多余的。 – Amarghosh 2010-01-27 08:21:08

+0

是的,你是对的。 – Rorick 2010-01-27 08:23:31

0

如果(eregi( '主题\\(即[az] +)\\ CSS',$主题)){ #匹配成功 }其他{ #匹配尝试失败 }

一个PHP例如让单词blue。

+0

也许你必须尝试正则表达式的朋友 这是一个伟大的工具,使正则表达式 – Marco 2010-01-29 11:20:45

1

难道你不能简单地使用字符'\'拆分字符串,然后得到splitResult [splitResult.Count-1]?

你总是可以替换“\”在你的环境中的路径分隔符,更一致的结果

0

另一种选择:

(\w+)\\\w+$ 
+0

我发布这个和删除,因为OP的路径中的“单词”可以包括非'\ W'字符像'-',''','空格'等 – Amarghosh 2010-01-27 08:43:09

相关问题