Python正则表达式查找所有单个字母字符

时间:2013-04-23 12:50:52

标签: python regex character alphabetical

我想在字符串中找到每个单个字母字符出现的所有索引。我不想捕获单个char html代码。

这是我的代码:

import re
s = "fish oil B stack peanut c <b>"
words = re.finditer('\S+', s)
has_alpha = re.compile(??????).search
for word in words:
    if has_alpha(word.group()):
        print (word.start())

期望的输出:

9
24

3 个答案:

答案 0 :(得分:4)

这样做:

r'(?i)\b[a-z]\b'

打破它:

  • 不区分大小写的匹配
  • 字边界
  • 一封信
  • 字边界

您的代码可以简化为:

for match in re.finditer(r'(?i)\b[a-z]\b', s):
   print match.start()

答案 1 :(得分:2)

使用您的格式(as you wanted),但只添加一个简单的支票。

import re
s = "fish oil B stack peanut c <b>"
words = re.finditer('\S+', s)
has_alpha = re.compile(r'[a-zA-Z]').search
for word in words:
    if len(word.group()) == 1 and has_alpha(word.group()):
        print (word.start())
>>> 
9
24

答案 2 :(得分:1)

在最一般的情况下,我会说:

re.compile(r'(?i)(?<![a-z])[a-z](?![a-z])').search

使用lookarounds说&#34;一封字母后面没有另一个字母,后面跟着另一封字母&#34;。