3

我想创建一个正则表达式来查找单词tjuv(瑞典语中的小偷),它可以与其他单词组合(参见下面的示例)和/或以不同的形式出现。

例子:

  • 赛克尔朱夫
  • 比尔朱夫
  • 楚瓦尔纳
  • 因布罗茨朱夫斯

下面的一个适用于tjuvtjuvs(小偷的),但是其他的变位以及与其他词的组合呢?

/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
4

3 回答 3

9

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

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

在 Regexr 上查看

But[a-z]是一个仅涵盖 ASCII 字符 a 到 z 的字符类(由于i修饰符而与大小写无关)。但我认为瑞典语也有一些字符不在该范围内。

所以无论你

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

或者

  • 取决于您可以使用的正则表达式风格\p{L}

    \p{L}是一个Unicode 代码点,匹配任何语言的每个字母。然后看起来像:

      /\p{L}*tjuv\p{L}*/ig
    
于 2013-01-17T21:44:45.203 回答
3

我不这么认为

/.*tjuv.*/ 

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

\w*(tjuv)\w*

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

于 2013-01-17T21:47:22.960 回答
2

据我了解这个问题,您正在寻找包含before 和/或 after 的任何字符串的单词tjuv。在正则表达式中,您通常可以使用点.来表示任意字符。因此tjuv.匹配tjuvA, tjuvX, tjuvs, ... 如果您想要任意数量的此类字符,请使用星号*tjuvs.*你可以匹配, tjuvABC, tjuvstjuv然后星号扩展为零字符!),...

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

看到一些应该匹配(或不应该匹配)的单词可能会很好。不仅如此,指定您使用的编程语言是一个好主意。

于 2013-01-17T21:38:03.043 回答