我更新了一些代码,我没有写,而部分是一个正则表达式如下:我有两个问题,其中一个是一个正则表达式
\[url(?:\s*)\]www\.(.*?)\[/url(?:\s*)\]
我明白,*?在第二个寄存器中进行非贪婪的匹配。
什么?:\ s *在第一个和第三个寄存器中做什么?
更新:按照要求,语言是C#.NET的3.5
我更新了一些代码,我没有写,而部分是一个正则表达式如下:我有两个问题,其中一个是一个正则表达式
\[url(?:\s*)\]www\.(.*?)\[/url(?:\s*)\]
我明白,*?在第二个寄存器中进行非贪婪的匹配。
什么?:\ s *在第一个和第三个寄存器中做什么?
更新:按照要求,语言是C#.NET的3.5
语法(?:)
是围绕把一个子表达式括号没有分别提取字符串的一部分的方式。
作者想要匹配中间的(.*?)
部分,并且不希望开头或结尾的空格阻碍。现在,您可以使用\1
或$1
(或任何适合您的特定语言的方法)来指代域名,而不是字符串开头的第一个空格块
?:使括号非空,分组。在那个正则表达式中,您只会提取一条包含中间(。*?)表达式的信息$ 1。
你可能会发现这个正则表达式备忘单非常有帮助(希望)。我花了很多年试图学习正则表达式,但没有运气。而且一旦我读到这张表格 - 我立即明白了我以前没学过的东西。
是什么?:\ S *在第一和第三寄存器呢?
它匹配零个或多个空格字符,而不捕获它们。
正则表达式笔者有意让在方括号标签结尾的空白,符合以下所有DNS标签“WWW”。像这样:
[url]www.foo.com[/url] # foo.com
[url ]www.foo.com[/url ] # same
[url ]www.foo.com[/url] # same
[url]www.foo.com[/url ] # same
注意,正则表达式也匹配:
[url]www.[/url] # empty string!
,并不能匹配
[url]stackoverflow.com[/url] # no match, bummer
感谢您的例子 - 非常感谢+1 – Guy 2009-08-24 04:48:24
哦,现在你有3个问题? – 2009-08-24 01:40:30
其中之一是正则表达式 – 2009-08-24 01:59:34
@Guy,\ s是一个perlish正则表达式构造。你能否更新问题标签来显示[perl]或[pcre](perl“兼容的”正则表达式),也许是有问题的实际编程语言?谢谢。 ? – pilcrow 2009-08-24 02:54:42