我开始学习正则表达式,我想知道:在哪些情况下最好使用它们?在哪些情况下使用正则表达式更好?
回答
正则表达式是一种模式匹配的形式,您可以将其应用于文本内容。举例来说,DOS通配符?和*您可以使用当您搜索文件 。这是RegExp的一个非常有限的子集。例如,如果要查找以“fn”开头的所有文件,后跟1到4个随机字符,并以“ht.txt”结尾,则不能使用通常的DOS通配符来完成此操作。另一方面,RegExp可以处理更复杂的模式。
正则表达式,总之,有效地
- 处理数据
- 搜索和替换字符串
- 提供扩展的字符串处理的方式。
通常,正则表达式本身可以提供字符串处理,其他功能(如内置字符串方法和属性只能在复杂函数或循环中使用它们时才可以)。
当您尝试查找/替换/验证复杂的字符串模式时。
在某些情况下,如果您需要更好的性能,您应该避免使用正则表达式来编写代码。一个例子是解析非常大的CSV文件。
正则表达式是用于解析文本的dsl(域特定语言)。就像xpath是一个用于遍历xml的dsl。它实质上是一种通用语言中的迷你语言。您可以在很少量的代码中完成相当多的工作,因为它专门用于狭义目的。正则表达式的一个非常常见的用途是检查字符串是否是电子邮件地址,电话号码,ssn等...
在比较字符串(preg_match),替换子字符串(sed,preg_replace),替换字符串(sed,preg_replace),搜索文件中的字符串(grep),分割字符串(preg_split)等。
这是一个非常灵活和广泛的模式表达式语言,它是非常有用的知道。
但是!这就像他们对扑克的评价,这很容易学,但很难掌握。
我刚碰到一个question,我认为这对RegEx来说是完美的,请看看并自己决定。
还有一些情况下,正则表达式是>>不是< <合适(通常;总是有例外)。
- 解析HTML
- 解析XML
在上述情况下DOM解析器是几乎总是一个更好的选择。语法很复杂,边缘案例太多,比如嵌套标签。
另外一定要考虑未来的维护程序员(可能是你)。评论和/或精心挑选的方法/常量/变量名称可能会造成一个不同的世界,特别是对于在正则表达式中不流利的开发人员而言。
正则表达式对验证自由文本输入的格式特别有用。当然,他们不能验证数据的正确性,只是它的格式。而且您必须记住某些类型值的区域差异(例如电话号码或邮政编码)。但是对于可以将有效输入定义为文本模式的情况,正则表达式可以快速进行验证。
- 1. 正则表达式 - 在某些情况下不起作用
- 2. 正则表达式替换零在某些情况下
- 3. notepad ++在这种情况下如何使用正则表达式?
- 4. 如何在这种情况下使用正则表达式?
- 5. 哪些内存管理技术在哪些情况下更好?
- 6. string.replaceAll(正则表达式,更换)不适用于某些情况下
- 7. 在哪些情况下使用定位会比浮动更好?
- 8. 正则表达式用或情况
- 9. 正则表达式提取器中必须使用哪些正则表达式?
- 10. 正则表达式混合情况下排除特定情况下
- 11. 在几种情况下设置正则表达式
- 12. 正则表达式 - 在不使用$符号的情况下匹配字符(S)
- 13. 哪种情况下性能更好
- 14. 奇怪的情况下的PHP正则表达式
- 15. 正则表达式:一个特定的情况下不匹配
- 16. 非ASCII的情况下正则表达式字边界
- 17. 正则表达式和字符的情况下
- 18. 要使用哪种正则表达式?
- 19. 哪个正则表达式更快
- 20. 替换使用正则表达式的特定字,除了一种情况下
- 21. 正则表达式在所有情况下都不能正常工作
- 22. 在哪些情况下实际使用双时钟表?
- 23. 如何在不使用C#中的正则表达式的情况下验证某些内容?
- 24. 在两种情况下用Isapi替换空格的正则表达式ReWrite
- 25. 正则表达式正则表达式正则表达式使用正则表达式,但不是与Python
- 26. [正则表达式]为一些正则表达式大于10000
- 27. Reporting Services表达式在某些情况下会出错
- 28. 我在哪些情况下使用这些排序算法?
- 29. 在哪种情况下LFU比LRU好?
- 30. 更改使用正则表达式
+1非常好的比喻! – 2009-11-07 21:32:42