繁体   English   中英

如何使用正则表达式将字符串与python中的数字匹配?

[英]How do I match a string up to a number in python using regular expressions?

我是正则表达式的新手,但是我希望匹配一个字符串,直到数字开始。

所以说我有:

EEEE1234

那我想只提取:

EEEE

我试过搜索,但我发现正则表达式令人困惑,我认为最好的方法是通过例子。 有什么想法吗? 此外,任何有关任何正则表达式代码生成器或良好的教程的见解?

使用\\ D表示“不是数字”:

r"^\D+"

例:

import re

s = "EEEE1234"
print re.match(r"^\D+",s).group(0)

看到它在线工作: ideone

你已经有了一些关于教程的建议,但是我还想补充一点,如果你还没有看过re模块文档 ,你应该在阅读更基本的教程之后将其加入书签并阅读。 该文档不是初学者级别,但它有一些非常有用的技巧,这些技巧特定于在Python中使用正则表达式,并且最后还有一些示例。

  • \\d =一位数(数字0到9)
  • \\D =一个非数字
  • \\D+ =一个或多个非数字
  • \\D+\\d =一个或多个非数字后跟一个数字
  • (\\D+)\\d =组中捕获的一个或多个非数字,后跟一个数字

所以,如果你有一个字符串

str = 'EEEE1234'

然后你可以import re并使用re.match来匹配字符串上的正则表达式:

re.match(r'(\D+)\d', str)

这将为您提供一个匹配对象,您可以从中提取该组的内容:

re.match(r'(\D+)\d', str).group(1)

这将包含EEEE

也许有一点可能有用,就是将正则表达式视为一种工具,首先执行匹配操作。 搜索,替换和字符串拆分都是这种能力的结果。 一个例子,取决于你想要如何提取所需的部分:

r"^(\D+)\d*"

此正则表达式使用您稍后可以引用的捕获组

出于学习目的,正如已经提到的那样,有许多资源。 如果您对正则表达式如何工作感兴趣,或者想要更好地理解它们,您可能需要阅读一些关于常规语言的内容

如果我们专门寻找字母符号的时候,我会做类似的事情:

re.search(r'[a-zA-Z]+(?=\d+)')

只有当数字跟随数字时才匹配,但不会返回数字本身。 这样你也可以避免群体,这可能是混乱的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM