【发布时间】:2010-01-27 07:58:46
【问题描述】:
我有一条这样的路径:
C:\Development.TFS\Examn\R4-branch\Web\OrganisationManager\themes\blue\css
我需要一个正则表达式来消除“蓝色”这个词。我试过了,但还没有找到解决办法。它实际上是从该字符串中获取最后一个单词之前的单词。 请帮忙, 谢谢
【问题讨论】:
-
您应该说明您使用的语言。
我有一条这样的路径:
C:\Development.TFS\Examn\R4-branch\Web\OrganisationManager\themes\blue\css
我需要一个正则表达式来消除“蓝色”这个词。我试过了,但还没有找到解决办法。它实际上是从该字符串中获取最后一个单词之前的单词。 请帮忙, 谢谢
【问题讨论】:
(\w+)\W+\w+$
匹配倒数第二个单词,将其捕获到反向引用号中。 1,然后匹配一个或多个非单词字符,然后是最后一个单词,然后是 EOL。
如果你真的不想要实际的单词而是匹配路径元素(即使它们包含非单词字符),那么
([^\\:]+)\\[^\\]+$
可能会做得更好。
编辑:在“倒数第二个单词组”中添加了 :,因此正则表达式也可以处理相对路径。
【讨论】:
你不能简单地使用字符'\'分割字符串然后得到splitResult[splitResult.Count-1]?
您总是可以在您的环境中用路径分隔符替换“\”,以获得更一致的结果
【讨论】:
if (eregi('themes\\([a-z].+)\\css', $subject)) { # 匹配成功 } 别的 { #匹配尝试失败 }
获取蓝色单词的 PHP 示例。
【讨论】:
您应该在字符串中找到此模式:([\w\s.-]+)\\[\w\s.-]+$。在您的情况下,第一组将包含单词“蓝色”。正则表达式和访问组的确切语法取决于您的编程语言。
【讨论】:
\d 是\w 的子集,因此\w\d 是多余的。
另一种选择:
(\w+)\\\w+$
【讨论】:
\w 字符,如 -、.、space 等。