我是初學者Regex
。我以爲我會在沒有幫助的情況下完成此任務,但不能。正則表達式在Ruby中找到'a'或'an'的句子
我想從下面的句子找到article word
對(其中文章必須爲A或):
This is a sentence. An egg is a word. A gee another word.
Last line is a word. Ocean is very big.
我用這個正則表達式:
/[(An)|(an)|a|A]\s+\w+[\s|.]/
捕獲對是:
'a sentence.', 'n egg ', 'a word.', 'A gee ', 'a word.', 'n is '.
圖案以上coul完全沒有捕獲An egg
。然而,更奇怪的是它抓住'n is '
在Ocean is
。
什麼可能是正確的模式來提取它?
您需要包括圍繞這些比賽串字邊界。請參閱正則表達式文檔中的'\ b'。例如,'/\b[(An)|(an)|a|A]\b\s+\w+[\s|.]/ – lurker
'''n egg'和'n is'是你的原因正在混合[character classes('[...]']](http://ruby-doc.org/core-2.1.0/Regexp.html#class-Regexp-label-Character+Classes)和[alternation ('|')](http://ruby-doc.org/core-2.1.0/Regexp.html#class-Regexp-label-Alternation)。它們在某些方面是相似的,但是一個字符類只會匹配一個字符 - 您的正則表達式的[(An)|(an)| a | A]'部分基本上與[Aan]或' (A | A | n)的'。 – matt