我想找出一个特定的字符是否连续出现在字符串的a字中,或者找出这个字是否只包含数字,并将其删除。例如
df
All aaaaaab the best 8965
US issssss is 123 good
qqqq qwerty 1 poiks
lkjh ggggqwe 1234 aqwe iphone5224s
我想检查两个条件,第一个条件检查重复字符是否超过3次,同时检查单词是否只包含数字。我只想删除当单词只包含数字和字符连续出现3次以上时。在
以下是输出结果
^{pr2}$以下是我的尝试
re.sub('r'\w[0-9]\w*', df[i])
表示数字。但这并不是删除单个字符的数字。同样对于重复的字符,我尝试了,re.sub('r'\w[a-z A-Z]+[a-z A-Z]+[a-z A-Z]+[a-z A-Z]\w*', df[i])
,但这会删除这里的每个单词。而不是重复的字母。在
有谁能帮我解决这些问题吗?在
数字很简单:
如果要删除相同字母出现两次的单词,可以使用捕获组(请参见https://docs.python.org/3/library/re.html):
^{pr2}$把它们放在一起:
例如:
之后,您可能需要使用以下方法清理空间:
我建议
参见regex demo
只有字母数字单词与此模式匹配:
\s*
-零个或多个空白\b
-单词边界(?=[a-zA-Z\d]*([a-zA-Z\d])\1{3}|\d+\b)
-单词中必须至少有4个重复的连续字母或数字,或者整个单词只能由数字组成[a-zA-Z\d]+
-有1+个字母或数字的单词。在Python demo:
^{pr2}$请注意,
strip()
将删除字符串开头剩余的空白。在R中的一个类似的解决方案是TRE regex:
见demo
图案细节和demo:
\s*
-0+个空格\b
-前导词边界(?:[[:alnum:]]*([[:alnum:]])\1{3}[[:alnum:]]*|[0-9]+)
-两种选择之一:[[:alnum:]]*([[:alnum:]])\1{3}[[:alnum:]]*
-0+个字母数字,后跟相同的4个字母数字字符,然后是0+字母数字字符|
-或[0-9]+
-1个或更多个数字\b
-尾随词边界更新:
若要同时添加一个选项以删除可能使用的单字母单词,请执行以下操作:
[[:alpha:]]|
添加到交替组):\s*\b(?:[[:alpha:]]|[[:alnum:]]*([[:alnum:]])\1{3}[[:alnum:]]*|[0-9]+)\b
(参见demo)[a-zA-Z]\b|
到lookahead组):*\b(?=[a-zA-Z]\b|\d+\b|[a-zA-Z\d]*([a-zA-Z\d])\1{3})[a-zA-Z\d]+
相关问题 更多 >
编程相关推荐