我有一根绳子
s = 'count_EVENT_GENRE in [1,2,3,4,5]'
#I have to capture only the field 'count_EVENT_GENRE'
field = re.split(r'[(==)(>=)(<=)(in)(like)]', s)[0].strip()
#o/p is 'cou'
# for s = 'sum_EVENT_GENRE in [1,2,3,4,5]' o/p = 'sum_EVENT_GENRE'
这很好
我怀疑的是(in)(like)
中的任何字符,它在该字符处分裂字符串s
,并给我第一个片段(在“cou”之后,它会找到一个匹配的字符i:en
)。任何包含(in)(like)
中任何字符的字符串都会发生这种情况。你知道吗
例如:'percentage_AMOUNT' o/p = 'p'
因为它在p
之后找到一个匹配的字符作为“e”。你知道吗
所以我想要一些建议,当分裂发生/发生时,如何把(in)(like)当作单词而不是字符。你知道吗
请建议一个语法。你知道吗
如果您只需要字符串的第一个单词,那么应该这样做:
使用
split
有什么问题吗?你知道吗回答您的问题,
[(==)(>=)(<=)(in)(like)]
是一个字符类,它匹配您在类中定义的单个字符。要匹配字符序列,需要删除[
和]
并使用交替:或更好:
你code看起来像:
但是,可能还有其他方法(更简单或更安全-取决于实际的规范)来获取所需内容(使用空格分割并获取第一项,使用
re.match
和r'\w+'
或r'[a-z]+(?:_[A-Z]+)+'
等)如果您的值位于字符串开头,以小写ASCII字母开头,然后可以有任意数量的
_
序列后跟大写ASCII字母,请使用:Full demo code:
相关问题 更多 >
编程相关推荐