一、使用正则表达式的分析方法
1、使用自然语言来表达和说明你的意图
2、数据源及其可能的内容
1、可用的正则表达式选项
2、灵敏度和特殊性要仔细区分程序员的编辑器对正则表达式的支持和程序员的编辑器可能支持的语言对正则表达式的支持。
对要匹配的内容编写的正则表达式,要考虑到匹配的灵敏度——找到该内容的概率,特殊性——屏蔽其他内容的能力。3、创建适当的正则表达式
当对需求进行了认真的分析,并且在对数据源 进行研究的基础上充分理解了数据内容的特点后,就能创建符合需求的正则表达式模式了。
不存在能够适合任何轻型的魔术公式,只有开发人员能够决定想匹配什么,不想匹配什么。
为了得到想要的结果,可能需要把文本操作分为两步来完成,但是,通过正则表达式结构的组合,一般都可以在一步之内完成匹配或替换操作。
4、对除简单正则表达式之外的正则表达式给予说明
清晰且完整的说明能避免浪费时间,并有效减轻自己的挫败感。
5、在创建更复杂的正则表达式时,考虑说明正则表达式的三方面内容:
(1)希望正则表达式做什么?
1、例如:
//用 Moon 替换 Star
这样的注释描述,实际十分模糊。
2、另一种定义方法:
//如果Star 本身是一个词,用Moon 替换它
//如果Star 是某个词的一部分,那么保持不变
注意:
如果对问题的定义反复修改几次,并且在反复过程的早期就编写了文档注释。
那么一定要确保在对正则表达式模式进行修改的同时,对这些文档注释进行更新。
如果文档注释无法反应你的思想变化,这种情况下有文档注释还不如没有。
(2)想选择什么匹配?
1、要尽可能恰如其分地表达出你想要匹配什么字符模式。
养成规范地表达这种想法的习惯,全面地理解你真正想要的是什么。
2、正则表达式的作用是匹配某些字符序列,因此最好能明确地列举出想要匹配那个(些)字符序列
随时可能会把类似下面这些注释加到代码中:
//当 Star 作为 Star Training Company 的一部分时匹配Star
//当 Star 独立存在但表示 Star Training Company 时匹配Star
//比如像在 "Star is the best" 这个短语中这样
//匹配任何所有格的 Star's
3、在明确的说明了你的目标是什么后,就可以更好地创建与你的意图严格相符的正则表达式模式了。
(3)不想选择什么匹配?
对数据源和要考虑创建的正则表达式模式理解得越充分,在注释中添加的说明也会越具体明确。
6、使用空白区域保持正则表达式说明的清晰
7、测试正则表达式的结果如果语法允许,可以利用空白区域来区分正则表达式中每个组件的注释内容,使注释内容更加清晰。
如果一条语句必须写在一行中,建议直接在正则表达式下方防止以分行形式编写的该正则表达式的一个副本作为注释。
1、必须认真考虑自己想要选择的数据和要确保不会选择的类似数据。
2、只有在对要处理的实际数据和要实现怎样的修改进行认真思考的基础上,才有可能创建出真正有用的测试文档。
3、注意在处理数据量大的文本时,先把数据源备份,防止出现意外进行挽回。
在备份时,注意检查和测试备份是否有效可用。
由于对希望完成的文本操作任务有了充分理解,也就能够对问题作出适当的定义并将其转换成能够满足需求的、正确的正则表达式。