使用正则表达式匹配单词

时间:2017-11-07 08:22:59

标签: regex

我是学习正则表达式的新手。我一直试图理解如何控制量词来匹配字符串中的单个单词。我知道那里有大量资源,但我很难找到任何具体的术语。

我想知道的是如何匹配以下字符串中的单词He?如果我能够知道如何匹配it(我的意思是,匹配任何位置词)会更好:

He found it difficult.

[a-zA-Z].*?    --it's a silly try to match "He"

1 个答案:

答案 0 :(得分:1)

这将找到由空格包围的2个字母单词,或者如果句子以2个字母单词开头,在这种情况下"他",它也将被找到。因此"他"和"它"将被发现。

(( .. )|(^.. ))

编辑 - 更深入解释

要搜索2个字母的单词,我们使用。 (点)为2个字符中的每个字符,因此我们有" .."但是这会找到任意两个字符,所以我们需要用空格包围,所以我们搜索" .."因此,只有当2个字符被空格包围时,才会找到它。但现在我们遇到了一个新问题。句子中的前2个字母单词没有前面的空格。所以你不会被发现。因此我们添加| (或)在exrpression中搜索相同的表达式,除了这次我们用^来交换起始空格以指示句子是否以2个字母后跟一个空格开头,它还应该找到该单词。所以总之我们发现" .." - 2个字母的单词被空间包围,我们也发现" ^ .."在句子开头跟一个空格字母。

编辑 - 更好的注册

一个更好的正则表达式将是(( [a-z][a-z] )|(^[a-z][a-z] )),因为这只会搜索单词,因为它与...相关联。 12"这也会导致匹配。然而,这个正则表达式假设您在忽略大小写时进行搜索,否则它将无法正常工作。