我得到了一个只接受正则表达式进行匹配的系统,因为在我上线查找一些教程之前我从来没有做过这样的工作,但是真的很困惑,所以我在这里问。正则表达式初学者
正则表达式需要符合以下:
File.f
File-1.f
在这两种情况下,它必须返回在第二种情况(
File
)的
.
或
-
之前什么
。
我很感激帮助。
感谢
我得到了一个只接受正则表达式进行匹配的系统,因为在我上线查找一些教程之前我从来没有做过这样的工作,但是真的很困惑,所以我在这里问。正则表达式初学者
正则表达式需要符合以下:
File.f
File-1.f
在这两种情况下,它必须返回在第二种情况(
File
)的
.
或
-
之前什么
。
我很感激帮助。
感谢
这应该这样做:
^[^\.\-]+
(英文:比赛已经在字符串的开头开始,由一切直到一个.
或-
发现)
谢谢你的快速回答。 – Acanthus 2010-01-18 14:37:49
'^ [^ .-] +'也会这样做。 – 2010-01-18 14:38:08
你不需要在字符类 – SilentGhost 2010-01-18 14:38:36
^([^.-]+).*\.f$
首先^
意味着开始行的
()
指组 - 这是捕获并返回第一组的部分(取决于你语言是$1
,\1
或groups()[0]
或group(1)
[]
手段之一从该设置字符
[^
指设置不含这些字符,即它是“全部字符,但不是那些我列出了”反对[]
,这意味着“任何字符,但只有那些我列出”
+
意味着先前的可从1重复无限次。
.
是 '任意' 单个字符
*
是从0到无穷大的时间重复。
\.
意味着字符.
(因为,是特殊的)
f
只是字母f(或字楼实际上)
$
是行的末尾。
我不知道你在用什么语言,但他们的工作大都是一样的。在C#中,我们将执行如下操作:
List<string> files = new List<string>() {
"File.f",
"File-1.f"
};
Regex r = new Regex(@"^(?<name>[^\.\-]+)");
foreach(string file in files) {
Match m = r.Match(file);
Console.WriteLine(m.Groups["name"]);
}
指定的组允许您轻松提取正在寻找的前缀。以上印刷品
File
File
在控制台上。
我强烈建议您拿起本书Mastering Regular Expressions。每个程序员都应该对正则表达式感到满意,Friedl的书是目前最好的。它与Perl,Java,.NET和PHP有关,具体取决于您的语言选择。
买书。没有Regex的程序员就像没有瑞士军刀的McGuyer。 – 2010-01-18 15:59:55
我同意Kimvais有一个非常坚实的答案(我不能投票很抱歉)
我写它在Perl之前,我阅读他们的答案,我想出了这个:
$ STRING1 =“John.f”; $ string2 =“Eric-1.f”;
$ string1 =〜m/^([0-9a-zA-Z] +)[.-]/i; 打印$ 1。 “\ n \ n \ n” 个;
$ string2 =〜m/^([0-9a-zA-Z] +)[.-]/i;
print $ 1。 “\ n \ n \ n” 个;
基本上它与Kimvais的相同,除了他会接受任何人物之前。或 - ,我不知道你是否想看,我的只接受数字或字母,然后a。或 -
祝你好运
请张贴更多的例子。这两个不足以给你一个有用的答案。 – 2010-01-18 14:36:15