Ruby正则表达式无法正确匹配

时间:2015-05-20 10:47:37

标签: ruby regex

我正在尝试创建一个RegEx来查找包含任何元音的单词。 到目前为止,我已经尝试过这个

/(.*?\S[aeiou].*?[\s|\.])/i

但我没有使用RegEx太多,所以它不能正常工作。 例如,如果我输入"测试是1234和天空飞测试1234" 它应该匹配test,is,和test1234但是显示 测试,是,1234和 如果把别的东西放到不同的输出上。

4 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式。

\S*[aeiou]\S*

\S*匹配零个或多个非空格字符。

\w*[aeiou]\w*

答案 1 :(得分:2)

或者你也可以这样做:

"test is 1234 and sky fly test1234".split.find_all { |a| a =~ /[aeiou]/ }
# => ["test", "is", "and", "test1234"]

答案 2 :(得分:1)

它将解决:

\b\w*[aeiou]+\w*\b

https://www.debuggex.com/r/O-fU394iC5ErcSs7

或者您可以\w

替换\S
\b\S*[aeiou]+\S*\b

https://www.debuggex.com/r/RNE6Y6q1q5yPJbe-

\b - 字边界

\w - 与[_a-zA-Z0-9]

相同

\S - 非空白字符

答案 3 :(得分:0)

试试这个:

\b\w*[aeiou]\w*\b

\b表示单词边界,因此此正则表达式匹配单词赏金,零个或多个字母,元音,零个或多个字母以及另一个单词边界