正则表达式里的#

来源:百度知道 编辑:UC知道 时间:2024/06/23 21:44:28
我在看一段源代码是发现如下:
#\{([a-z0-9\-_]*?)\}#Ssie'用它来匹配文件中的所有{...}这样的
但是两边的##把我难住了,它要匹配的是{...},两边并没有##啊
我查了很多正则的资料,教材,都没有#这个,我又以为会不会是像/.../这样的界定符。。但是今天发现了 http://msdn.microsoft.com/zh-cn/library/cc295435.aspx
这个里面说:
#
最小为一或更多,用于匹配在此表达式之前出现一次或更多次的某个字符,可与尽可能少的字符相匹配。

例如,正则表达式 si.#er 可匹配“sicker”或“silkier”。在本例中,将句号 (.) 和井号 (#) 组合成一个语法。句号 (.) 紧挨在井号 (#) 表达式之前。井号 (#) 可与“si”和“er”之间出现一次或更多次的任意字符相匹配。句号 (.) 用作单词 sicker 中字符“c”和“k”的通配符,以及单词 silkier 中“l”、“k”和“i”的通配符。

。。为什么网上那么多教材都没有#这个字符

这是因为不同的语言中对正则表达式的支持是不一样的。

比较说有些语言就不支持\1这样的后向引用。

有些语言则是不支持(?<=a)这个的零宽断言。

同样的道理,有些语言不支持#这个符号,即使不支持,那当然就没有提到了。