只匹配一个单独的字母

时间:2015-07-02 18:57:53

标签: ruby regex

我尝试编写仅与单个独立字母匹配的正则表达式,例如aCfG,但是,例如,不是abcde

我尝试[a-zA-z],但以上所有内容都匹配。

在这种情况下我该怎么做?

3 个答案:

答案 0 :(得分:2)

^[a-zA-Z]$

添加^$或锚点以限制只匹配一个字符。

(?:^|(?<=[^a-zA-Z]))[a-zA-Z](?=[^a-zA-Z]|$)

答案 1 :(得分:2)

根据您的内容,有多种方法可以执行此操作。这可能有效:

[^a-zA-Z][a-zA-Z][^a-zA-Z]

或者有一个正则表达式代码,\ b:

\b[a-zA-Z]\b

更有用,因为它允许在行的开头和结尾进行匹配。

答案 2 :(得分:1)

您的正则表达式[a-zA-z]不仅匹配字母,还匹配[]\^_和{{1}匹配}}。此外,它没有锚点,因此会匹配`中的at

enter image description here

您可以使用POSIX bracket expression at将单个字母子字符串与word boundary \b匹配:

alpha

请参阅IDEONE demo

输出:

puts 'a,C,f,G, but, NOT abc de'.scan(/\b[[:alpha:]]\b/)