我不明白或看到正则表达式的需要.
有些人可以用简单的方式解释它们,并提供一些基本的例子,它们可以是有用的,甚至是关键的.
在需要使用/操作模式的地方使用它们.例如,假设您需要识别以下模式:
>任何字母,A-Z,大写或小写,5或6次
> 3位数
>单字母a-z(绝对小写)
(这样的邮件,信用卡,社会安全号码验证等)
这不是很难编写代码 – 但随着模式变得更加复杂,变得更加困难.使用正则表达式,您可以描述模式(而不是验证它的代码),并让正则表达式引擎为您完成工作.
这里的模式就像这样
[A-Za-z]{5,6}[0-9]{3}[a-z]
(还有其他方式也可以表达.)分组结构可以轻松匹配整个模式,并抓取(或替换)不同的位.
一些缺点:
>正则表达式可能变得复杂,很难阅读很快.彻底文件!>不同的正则表达式引擎之间的行为有差异>复杂性可能很难判断,如果你不是专家(我当然不是!);有一些“陷阱”,使得这种模式对特定的输入变得非常缓慢,这些都不明显有些人大量过度使用正规表达(当然还有一些使用不当).我看到的最糟糕的例子是有人问(在C#组上)如何检查一个字符串是否长度为3 – 这显然是使用String.Length的工作,但有人认真地建议匹配正则表达式.疯狂. (他们也有正则表达式错误,这有点证明了.)>正则表达式使用反斜杠来转义各种东西(例如,用于表示“一个点”而不是“任何字符”.在许多语言中,反斜杠本身需要转义.