我想创建一个正则表达式,找到单词 tjuv (瑞典语中的小偷),可以与其他单词组合(参见下面的示例)和/或进行不同的变换。< / p>
示例:
下面的一个适用于 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
答案 0 :(得分:9)
我认为这就是你想要的,“tjuv”这个词与之前和/或之前的其他字母有关:
/[a-z]*tjuv[a-z]*/ig
但是[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.
匹配tjuvA
,tjuvX
,tjuvs
,...
如果您想要任意数量的此类字符,请使用星标*
。使用tjuvs.*
,您可以匹配tjuvABC
,tjuvs
,tjuv
(然后星号扩展为零个字符!),...
所以我认为/.*tjuv.*/
可能是你想要的。但是,此处.
也匹配空格字符,因此正则表达式也匹配something xxxtjuvyyy somethingelse
,这可能不是您想要的。
看到一些应匹配(或不匹配)的单词可能会很好。更重要的是,指定您正在使用的编程语言是个好主意。