我尝试编写仅与单个独立字母匹配的正则表达式,例如a
,C
,f
, G
,但是,例如,不是abc
或de
。
我尝试[a-zA-z]
,但以上所有内容都匹配。
在这种情况下我该怎么做?
答案 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}匹配}}。此外,它没有锚点,因此会匹配`
中的a
和t
。
您可以使用POSIX bracket expression at
将单个字母子字符串与word boundary \b
匹配:
alpha
请参阅IDEONE demo
输出:
puts 'a,C,f,G, but, NOT abc de'.scan(/\b[[:alpha:]]\b/)