Welcome

首页 / 正则表达式 / 正则表达式查找相似单词的方法

本文通过展示各种不同的正则表达式结构,以及在实际应用中会用到的技巧,熟悉掌握正则表达式的应用。
问题描述:
在这个实例中你要解决如下几个问题。
1、想要在一个字符串中找到所有的color和colour。
2、想要找到这3个以"at”结尾的单词中的任意一个:bat、cat或rat。
3、想要找到以phobia结尾的单词。
4、想要找的名字"Steven”的常见变形:Steve、Steven和Stephen。
5、想要匹配术语"regular expression”的所有常见形式。
解决方案:
下面按顺序列出用来解决这些问题的正则表达式。所有这些解决方案中都使用了不区分大小写的选项。
问题1:color和colour
colou?r
正则选项:不区分大小写
正则流派:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby
问题2:bat、cat或rat
[bcr]at
正则选项:不区分大小写
问题3:以"phobia"结尾的单词
w*phobia
正则选项:不区分大小写
问题4:Steve、Steven和Stephen
Ste(?:ven?|phen)
问题5:"regular expression”的变体
reg(?:ular·expressions?|ex(?:ps?|e[sn])?)
正则选项:不区分大小写
正则流派:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby
解析:
                            #判断一个单词边界位置
 reg                        #匹配"reg”
 (?:                         #分组但是不捕获
   ular                    #        匹配"ular”
    expressions?        #       匹配"expression”或"expressions"
   |                           #  或者:
  ex                         #       匹配"ex”
  (?:                        #        分组但是不捕获
    ps?                     #            匹配"p”或"ps"
   |                           #       或者:
    e[sn]                   #            匹配"es”或"en"
  )?                          #         结束非捕获分组,整个分组为可选
 )                             # 非捕获分组的结束       
                            #判断一个单词边界位置
注:这5个正则表达式都使用了单词边界(<>)确保只会匹配整个单词。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。