具有子字符串的字母表的正则表达式

时间:2013-11-04 21:39:39

标签: regex

在英文字母表中为所有字符串的语言编写正则表达式,并将“computer”作为子字符串。忽略区分大小写。在正则表达式中,您可以使用符号范围而不是键入所有字符,例如[a - z]。

我出现了这个表达

[a-z]*.’computer’.[a-z]*

如果我的问题是正确的,是否有任何意见?

3 个答案:

答案 0 :(得分:0)

就是这样:

/^[a-z]*computer[a-z]*$/i

说明:

  • / =通常的regexp分隔符
  • ^ =字符串的开头
  • [a-z]* =任何字母序列
  • computer =匹配该文字字符串
  • $ =字符串结尾
  • i =不区分大小写的修饰符

答案 1 :(得分:0)

嗯,可以有一百个答案,取决于你对单词和子字符串的定义。

(?i)\b(?:[a-z]+computer[a-z]*|[a-z]*computer[a-z]+)\b

 (?i)
 \b
 (?:
      [a-z]+ computer [a-z]* 
   |  [a-z]* computer [a-z]+ 
 )
 \b

答案 2 :(得分:0)

如果我正确理解你的问题,你需要一个正则表达式来检测包含单词'computer'的字符串。你建议的RE有两个问题,一个是.’是额外的和不正确的,另一个是它不是不区分大小写的。以下是您的正确版本。

/[a-zA-Z]*computer[a-zA-Z]*/    

要接受带有单词computer的字符串在不同的 case 中,例如'Computer'或'compUter',你应该'忽略大小写 flag '。这是:

/[\w\s]*computer[\w\s]*/i

如您所见i是忽略大小写的标志。请注意,不同语言的设置标志可能不同。我们用javascript测试一下。

/[\w\s]*computer[\w\s]*/i.test('Apple Computer Stores')
true

它也接受带有前缀或后缀的词,例如“计算机化”或“超级计算机”。如果你不想要那个并且只需要搜索整个单词,你应该添加\ b这样的。

/[\w\s]*\bcomputer\b[\w\s]*/i

让我们测试,

/[\w\s]*\bcomputer\b[\w\s]*/i.test('Supercomputer')
false

/[\w\s]*\bcomputer\b[\w\s]*/i.test('Super Computer')
true