Jon*_*eet 30
在需要使用/操作模式的地方使用它们.例如,假设您需要识别以下模式:
(像这样的东西用于邮政编码,信用卡,社会安全号码验证等)
这并不是很难用代码编写 - 但随着模式变得更复杂,它变得更难.使用正则表达式,您可以描述模式(而不是验证它的代码),并让正则表达式引擎为您完成工作.
这里的模式会是这样的
[A-Za-z]{5,6}[0-9]{3}[a-z]
Run Code Online (Sandbox Code Playgroud)
(还有其他表达方式.)分组结构使得匹配整个模式和获取(或替换)它的不同位变得容易.
但有一些缺点:
Bri*_*ndy 23
正则表达式用于:
正则表达式本身就是一种语言,允许您对字符串输入执行复杂的验证.即你传递一个字符串,如果是匹配则返回true或false.
如何使用正则表达式:
一些正则表达式语言功能:
轮换:允许您选择一件或另一件事.示例仅匹配是或否.
是|否
分组:您可以使用括号定义范围并具有优先级.例如匹配3色调.
GR(A | E)Y |黑色|白色
量化: 您可以量化您想要的东西量.?表示1或0,*表示0或更多.+表示至少一个.示例:接受非空的二进制字符串:
(0 | 1)+
为什么正则表达式
正则表达式可以很容易地匹配字符串,它通常可以用简单的小正则表达式字符串替换几十行源代码.
不适用于所有类型的匹配:
要了解某些内容是如何有用的,您还应该了解它的用处.正则表达式对某些任务不利,例如,当您需要保证字符串具有相同数量的括号时.
提供几乎所有语言:
几乎任何编程语言都提供正则表达式.
形式语言:
任何正则表达式都可以转换为确定性有限状态机.以同样的方式,您可以弄清楚如何制作将验证正则表达式的源代码.
例:
[hc]+at
Run Code Online (Sandbox Code Playgroud)
匹配"帽子","猫","hhat","聊天","hcat","ccchat"等,但不是"at"