|
|
1
32
模式 . 例如,假设您需要识别以下模式:
(邮政编码、信用卡、社会保险号码验证等都会出现这种情况。) 那不是真的 坚固的 用代码编写——但随着模式变得越来越复杂,它会变得越来越难。使用正则表达式,您可以描述 图案 (而不是验证它的代码)并让正则表达式引擎为您完成工作。 这里的模式是这样的
但也有一些缺点:
|
|
|
2
23
正则表达式的用途是:
一些正则表达式语言功能:
为什么是正则表达式?
不适用于所有类型的匹配: 要理解某件东西是如何有用的,你也应该理解它是如何无用的。正则表达式对于某些任务是不好的,例如,当您需要保证字符串的括号数相等时。 提供几乎所有语言版本: 正则表达式几乎可以在任何编程语言中使用。 正式语文:
例子:
|
|
|
3
4
它们看起来有点神秘,但它们提供了一个非常强大的工具来寻找
文本模式
. 任何来自
它们可以被处理成一个非常高效的数据结构(FSA),可以非常快速地找到匹配项。 |
|
|
4
3
|
|
|
5
3
如果我可以将OP引导到我自己的一个问题的一些答案/评论: How important is knowing Regexs? |
|
|
6
1
正则表达式是指定大多数模式匹配和替换问题的一种非常简洁的方法,并且regexp引擎可以得到高度优化。 如果您想做与相对简单的regexp相同的工作,那么就必须编写大量代码,这些代码可能会包含许多bug,难以理解,并且性能很差。 而使用regexp执行相同操作的时间要短得多,几乎可以肯定,它的性能与技术上可能的一样好,并且对于熟悉regexp的任何人来说都更容易理解(尽管在任何情况下都应该对其进行注释) |
|
|
7
1
电子邮件示例实际上是正则表达式的一个糟糕示例。可以使用正则表达式,但结果表达式(例如 this one 它不处理“约翰·多伊”式的地址)是非常复杂的——看看 email address specification 你会明白为什么。。。 然而,正则表达式在许多其他情况下非常有用,例如从文本中提取ip地址、从html中提取标记等。查找所有版本化文件将是另一个例子。大致如下:
将匹配该格式的任何文件名
没有正则表达式是不必要的,但是它们可以节省大量的时间,为正则表达式可以轻松实现的事情编写一个手动解析器。 |
|
|
8
0
当您在大量文本数据中找到某种模式时,或者如果您想检查字符串是否为某种格式时。 例如电子邮件地址。。。 检查at符号和有效域的代码看起来相当大,您可以使用正则表达式,并在两行代码中找到答案。
其他示例是在将数字解析为整数之前检查其格式是否正确。 |
|
|
9
0
Jon和Sqook对正则表达式给出了很好的解释和定义,对于简单的问题,这是很容易理解的,但是如果你把它用于复杂的问题,正则表达式可以是a&$ @ ((至少对我来说;-)) 我经常使用Expresso来帮助我构建复杂的正则表达式代码。 http://www.ultrapico.com/Expresso.htm
祝你好运! |
|
|
10
0
一些实际应用: 查找扩展JUnit测试用例的抽象类:
这对于查找无法实例化且需要从运行测试用例的ant构建脚本中排除的测试用例非常有用。您无法搜索常规文本,因为您事先不知道类名。因此使用了\w+(至少一个单词字符)。 查找正在运行的bash或bourne shell脚本:
如果您想全部杀死它们或其他什么东西,那么这非常有用,如果您只搜索sh,您将无法获得bash脚本,并且必须再次运行bash脚本的命令。同样,它比完美更有用,但几乎没有一个即时编写的正则表达式是可用的。
|
|
|
11
0
关键用途的例子是
JavaScript
:
就我个人而言,只有在文本编辑器中的自动查找/替换中需要一些高级匹配时,我才会使用正则表达式( TextPad 或Visual Studio)。在我看来,最强大的功能是能够匹配可以插入到替换中的模式。 |
|
|
12
0
举几个例子:
阅读以下链接了解更多信息: 如何:在ASP.NET中使用正则表达式约束输入 http://msdn.microsoft.com/en-us/library/ms998267.aspx |
|
|
DotFX · RegEx捕获关键字前但括号后的所有内容 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |
|
|
iato · 确保正则表达式不从命名材料中的数字中提取 1 年前 |
|
|
vr8ce · 非成对标记中特定字符的正则表达式 1 年前 |
|
|
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 1 年前 |
|
|
Carsten · 使用最近的搜索模式更改文本块 1 年前 |