需要帮助理解这个特定的正则表达式[^。]

时间:2014-06-28 07:26:16

标签: regex

[^.]+\.(txt|html)

我正在学习正则表达式,并试图解析它。

[^。] ^表示“not”,点是一个通配符,表示任何字符,所以这意味着找到一个匹配“not any character”?我还是不明白这一点。谁能解释一下?

加号是Kleene Plus,意思是“1或更多”。所以现在它是“一个或多个”“不是任何角色”。

我得到\.,这意味着一段时间。

(txt | html)表示与txt文件或html文件匹配。我想在加号后我理解了一切。我不明白为什么它看起来不像DOS等价物我可以这样做:* .txt或*。(txt | html)其中*表示以文件扩展名.txt或.html结尾的所有内容?

在DOS中,[^。]相当于*吗?

2 个答案:

答案 0 :(得分:7)

点(.)在字符类中没有特殊含义,并且不需要转义。

[^.]表示“任何不是文字.字符的字符”。 [^.]+匹配点的任何字符的一个或多个匹配项。

来自regular-expressions.info

  

在大多数正则表达式中,字符类中唯一的特殊字符或元字符是右括号(]),反斜杠(\),插入符号(^ )和连字符(-)。通常的元字符是字符类中的普通字符,不需要通过反斜杠进行转义。如果你逃避字符类中的常规元字符,你的正则表达式将正常工作,但这样做会大大降低可读性。

答案 1 :(得分:0)

.[]字符类中并不特殊。 [^.]+表示任何不是点的字符的一次或多次出现(+)。

如果你执行*.txt它将不是有效的正则表达式,因为*不会让字符重复(零次或多次)。