正则表达式中的通配符

时间:2013-01-17 21:32:10

标签: javascript regex

我想创建一个正则表达式,找到单词 tjuv (瑞典语中的小偷),可以与其他单词组合(参见下面的示例)和/或进行不同的变换。< / p>

示例:

  • cykeltjuv
  • biltjuv
  • tjuvarna
  • inbrottstjuvs

下面的一个适用于 tjuv tjuvs (一个小偷的),但是其他的结合以及与其他单词的组合呢?

/tjuv(?:s){0,1}/ig

既然我已经学会了一点瑞典语,那么你学习一些正则表达式是公平的; - )

编辑:更具体地说,实际上我无法想到与tjuv这个词不匹配的情况。

我正在做的是搜索 tjuv 这个词的短语,例如(翻译成英文):

1. När en familj kom hem från en utlandssemester upptäckte de att en inbrottstjuv
   hade varit i farten. <- MATCH!

2. På juldagen hade en cykeltjuv varit framme och stulit en cykel. <- MATCH


3. Violer är blå och rosor är röda <- No 'tjuv' and therefor no match

3 个答案:

答案 0 :(得分:9)

我认为这就是你想要的,“tjuv”这个词与之前和/或之前的其他字母有关:

/[a-z]*tjuv[a-z]*/ig

here on Regexr

但是[a-z]是一个只覆盖ASCII字符a到z的字符类(由于i修饰符而与案例无关)。但我认为瑞典语也有一些不包含在该范围内的角色。

所以要么你

  • 将缺少的字符添加到字符类

  • 依赖于您的正则表达式,您可以使用\p{L}代替。

    \p{L}Unicode code point,匹配任何语言的每个字母。那么看起来像:

    /\p{L}*tjuv\p{L}*/ig
    

答案 1 :(得分:3)

我不这么认为

/.*tjuv.*/ 

很好。它匹配所有文本。这样更好:

\w*(tjuv)\w*

这匹配列表中的所有字词。 (以及所有带有“tjuv”的词语)

答案 2 :(得分:2)

据我所知,您在tjuv之前和/或之后寻找包含任何字符串的字词。在正则表达式中,通常可以使用点.来表示任意字符。因此tjuv.匹配tjuvAtjuvXtjuvs,... 如果您想要任意数量的此类字符,请使用星标*。使用tjuvs.*,您可以匹配tjuvABCtjuvstjuv(然后星号扩展为零个字符!),...

所以我认为/.*tjuv.*/可能是你想要的。但是,此处.也匹配空格字符,因此正则表达式也匹配something xxxtjuvyyy somethingelse,这可能不是您想要的。

看到一些应匹配(或不匹配)的单词可能会很好。更重要的是,指定您正在使用的编程语言是个好主意。