我想写一个正则表达式来匹配一个可能同时包含单词和数字而不仅仅是数字的字符串。我使用了这个正则表达式[A-z+\d*],但它不起作用。一些匹配的样本:
[A-z+\d*]
expression123 123expression exp123ression
不匹配样本:
1235234567544
你能帮我解决这个问题吗?先谢谢你了
e4yzc0pl1#
快来救援!
^(?!\d+$)\w+$
这使用了负先行构造和锚点,请参见a demo on regex101.com请注意,仅使用纯Python代码也可以得到相同的结果:
Python
samples = ["expression123", "123expression", "exp123ression", "1235234567544"] filtered = [item for item in samples if not item.isdigit()] print(filtered) # ['expression123', '123expression', 'exp123ression']
参见another demo on ideone.com。使用这两种方法,您都不会考虑像-1或1.0这样的输入字符串(它们是允许的)。
-1
1.0
4smxwvx52#
另一个解决方案:只需在字符串中搜索除数字以外其他字符:
import re data = [ 'expression123', '123expression', 'exp123ression', '1235234567544' ] for t in data: m = re.search(r'\D', t) if m: print(t)
图纸:
gwbalxhn3#
您可以尝试匹配以下正则表达式。
^(?:\w*[a-zA-Z_]\w*)?$
Demo这匹配空字符串。如果字符串必须包含至少一个字符,则可以简化为
^\w*[a-zA-Z_]\w*$
3条答案
按热度按时间e4yzc0pl1#
快来救援!
这使用了负先行构造和锚点,请参见a demo on regex101.com
请注意,仅使用纯
Python
代码也可以得到相同的结果:参见another demo on ideone.com。
使用这两种方法,您都不会考虑像
-1
或1.0
这样的输入字符串(它们是允许的)。4smxwvx52#
另一个解决方案:只需在字符串中搜索除数字以外其他字符:
图纸:
gwbalxhn3#
您可以尝试匹配以下正则表达式。
Demo
这匹配空字符串。如果字符串必须包含至少一个字符,则可以简化为