2013-11-04 66 views
0

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

我想出了这个表达

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

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

+0

你是在同一个班[SRK(http://cs.stackexchange.com/users/11169/srk)? (http://cs.stackexchange.com/questions/16701/regular-expression-for-a-substring) – admdrew

+0

如果你想玩,然后检查Rubular。我开始了你一个会议,只是摆脱了你好,并把箱子放在左边。 http://rubular.com/r/gIEg1jKxcW – JeremyS

回答

0

这是它:

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

说明:

  • / =平常的regexp定界符
  • ^ =串
  • [a-z]*的开头=字母
  • computer任何序列=匹配那个李或双侧串
  • $ =字符串
  • i =不区分大小写修改
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 
0

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

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

要接受字符串,在不同的情况下字计算机,如“计算机”或“计算机”你应该你要跟“忽略大小写标志”。这里是:

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

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

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

它还接受带有前缀或后缀的字,例如'computerized'或'supercomputer'。如果你不想要这个,只需要全文搜索,你应该像这样添加\ 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 
相关问题