在匹配之前和之后的非字母字符的正则表达式

时间:2013-12-09 06:14:09

标签: regex

我有一个文档列表,我必须根据给定的匹配来获取某些结果。我正在使用正则表达式。我正在使用此正则表达式来匹配我在文档中的查询

(.*)query(.*)

他们是这个正则表达式中的一个问题。例如,如果您正在搜索查询“mba”,那么正则表达式将是

(.*)mba(.*)

它给我这样的结果

    (mca or mba) along with doeacc 'b' level  // correct "mba" preceeded by '(' 
    academy of theatre arts/dramatic arts, university of mumbai // not fine "mba" comes in mumbai
    aditya college of mba // correct
    agrawal institute of management & technology, mumbai // not fine "mba" comes in mumbai
    agricultural college & research institute, coimbatore // not fine "mba" comes in coimbatore
    agricultural college and research institute, coimbatore // not fine "mba" comes in coimbatore

如果我想检查查询之前和之后的字符

`"mba" in this case

是非字母表,即不在[a-z]和[A-Z]中 他们是一种在正则表达式中排除给定字符的方法

由于

1 个答案:

答案 0 :(得分:4)

执行此匹配的最简单方法是使用\b锚点,该锚点匹配字边界:

\bmba\b

\b锚点与字符不匹配,但与单词字符和非单词字符之间的零宽度边界不匹配。因此\bmba\b只会在mba前面有非{8}或(等非字字符且后跟非字字符的情况下匹配。