我的话有:' objQuery',' Barack Obama',' expandableMap',' mh17',' MH17& #39 ;.我正在清理用编码语言轻轻填写的文本
我想检测像' objQuery'在正则表达式的帮助下,它们是连续的,即没有任何空格和大写字母(更像是一些编码语言标记)。
这样做的正则表达式是什么?
我试过了:
re.search(r'\w+[A-Z]+', term)
也取消了专有名称。
我也希望得到结果:
正确:' objQuery',' expandableMap'
任何包含大写字母的单词。 Word可以以字母数字字符开头。我可以遍历字符并形成一个布尔函数来执行此操作,但我正在寻找简短的内容。
错误:' Barack Obama',' mh17',' MH17'
答案 0 :(得分:3)
是不是只有:[a-z]+[A-Z][a-zA-Z]+
,用什么词分隔符是必要的?
或者,正如Juan Lopes在评论中建议[a-z]+[A-Z][a-zA-Z]*
,如果您还想匹配objM
等字符串。
答案 1 :(得分:3)
我认为你正在寻找这个。
\b[a-z]+(?:[A-Z][a-z]+)+\b
>>> s = "objQuery Barack Obama expandableMapFoo"
>>> m = re.findall(r'\b[a-z]+(?:[A-Z][a-z]+)+\b', s)
>>> m
['objQuery', 'expandableMapFoo']
OR
\b[a-z0-9A-Z]+(?:[A-Z][a-z]+)+\b
答案 2 :(得分:1)
def check(word):
cap = word[0].isupper()
for i,char in enumerate(word):
if char == ' ':
print('whitespace detected. Quitting')
return False
if char.isupper() and not cap:
print('detected upper case in the middle of the word at position', i)
输出:
In [43]: check('objQuery')
detected upper case in the middle of the word at position 3
In [44]: check('Barack Obama')
whitespace detected. Quitting
Out[44]: False
In [45]: check('expandableMap')
detected upper case in the middle of the word at position 10