不允许在python中使用纯数字的正则表达式? [关闭]
Posted
技术标签:
【中文标题】不允许在python中使用纯数字的正则表达式? [关闭]【英文标题】:Regular Expression for not allowing pure numbers in python? [closed] 【发布时间】:2020-04-15 07:59:00 【问题描述】:Df:
String_Value
0 city
1 city233
2 123_city
3 123-
4 ab12cd
5 1234_
6 12/09/1998
7 @#987
8 189
9 123
10 @#+-
11 234-
12 Abc@
13 04-04-2004
输出:
Bad_String_Value
8 189
9 123
我正在寻找一个可以解决这个问题的正则表达式。在这个问题中,我不允许在我的专栏中使用纯数字,除了一切都很好但不是纯字符串。列可以包含纯数字以外的任何内容。
【问题讨论】:
你能展示你的尝试吗? [A-Z|a-z] 但它不会处理特殊字符 试一试:^(?=.*\D).*$
【参考方案1】:
我认为你过于复杂了你应该用正则表达式做什么(或者可能对正则表达式很陌生),而不是试图匹配你的行不是只有数字寻找的情况他们是只有数字的那些。在这种情况下,您可以使用 -
^\d+$
作为您的正则表达式模式。这个模式的作用是 -
^
建立字符串的开头
\d+
匹配一个或多个重复尽可能多次的数字
$
匹配字符串的结尾
现在您有了所有只有数字的行,然后您可以根据需要过滤掉这些行。
【讨论】:
我试过这个 df.String_Value.str.contains(r'[^\d+]$') 它没有给出想要的结果。谢谢 @kalyan 为什么要添加硬括号?这完全改变了正则表达式的作用。您的正则表达式匹配一个非数字和字符串的结尾,这与我的答案中的正则表达式不同 @kalyan 更清楚地说明您的正则表达式所做的是 - [^\d+] 查找任何一个不是数字或不是 + 的字符,然后 $ 让它查找结尾的字符串,它不会做你试图完成的事情,另一方面,一个简单的 ^\d+$ 会。 谢谢@Karan Shishoo 我明白了。以上是关于不允许在python中使用纯数字的正则表达式? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章