Regex 如何用正则表达式检查第二个字母是否等于a?

Regex 如何用正则表达式检查第二个字母是否等于a?,regex,grep,Regex,Grep,我需要匹配第二个字母为“a”的字符串,我当前的正则表达式是: ^([^a-zA-Z]*[a-zA-Z][^a-zA-Z]*)a+ 但是这比我需要的要少,我甚至不知道什么不匹配,但是你知道问题出在哪里,或者是否有更好的方法? 例如,我需要匹配以下各项: " kamcnn" ",.,ya..--/**+-00" "0 0 q a" 我匹配了我能想象到的每一个字符串,但是我得到的结果仍然比我应该得到的要低。 编辑:“字母”是指[a-zA-Z]类中的字符。试试这个: ^[^a

我需要匹配第二个字母为“a”的字符串,我当前的正则表达式是:
^([^a-zA-Z]*[a-zA-Z][^a-zA-Z]*)a+
但是这比我需要的要少,我甚至不知道什么不匹配,但是你知道问题出在哪里,或者是否有更好的方法? 例如,我需要匹配以下各项:

"  kamcnn"
",.,ya..--/**+-00"
"0        0   q    a"
我匹配了我能想象到的每一个字符串,但是我得到的结果仍然比我应该得到的要低。 编辑:“字母”是指[a-zA-Z]类中的字符。

试试这个:

^[^a-zA-Z]*[a-zA-Z][^a-zA-Z]*a.*
如果第二个ASCII字母是
a
,则这将匹配整个字符串:

^           # Start of string
[^a-zA-Z]*  # Match any number of non-letters
[a-zA-Z]    # Match one ASCII letter
[^a-zA-Z]*  # Match any number of non-letters
a           # Match an a
.*          # Match whatever follows

不知道你说的“第二个字母是a”是什么意思。。。从您提供的字符串来看,似乎您只是在寻找字符串中某个地方存在的“a”。我觉得没问题,也许您还需要匹配大写字母?如果是,使用
^([^a-zA-Z]*[a-zA-Z][^a-zA-Z]*)[aA]
Hmm,不,测试它,结果相同。我找到了23389行,但我应该找到26639行。在你给出的例子中,你的正则表达式遗漏了什么?嗯,没有,测试过,结果相同。我找到了23389行,但我应该找到26639行。显示一条不匹配但应该匹配的行。