python - 以下字符串的正则表达式模式?

标签 python regex

以下字符串的正则表达式模式是什么:

hi firstName lastName 27 Jun 2017

字符串中应标识 3 个字段:优先级、名称和日期。到目前为止,我有以下正则表达式:

^(\w+)\s+(.*?)\s+

它标识优先级,但不标识全名。我的正则表达式最多可识别 firstName,不包括 lastName

提前致谢!

最佳答案

您的正则表达式不会提取全名,因为 \s+(.*?)\s+部分匹配 1 个或多个空格,然后匹配并捕获除换行符之外的任何 0 个以上字符,尽可能少地直到前 1 个以上空格。这些空格位于firstName之后。 ,因为没有更多必须匹配的原子。

您可以使用

^(?P<priority>\w+)\s+(?P<name>.*?)\s+(?P<date>\d.*)

请参阅regex demo

详细信息

  • ^ - 字符串开头(如果使用 re.match 则隐式)
  • (?P<priority>\w+) - 组“优先级”:1+ 个单词字符
  • \s+ - 1 个或多个空格
  • (?P<name>.*?) - 组“名称”:除换行符之外的任何 0+ 个字符尽可能少
  • \s+ - 1 个或多个空格
  • (?P<date>\d.*) - “日期”组:一个数字,然后是该行的其余部分。

Python demo :

import re
rx = r"(?P<priority>\w+)\s+(?P<name>.*?)\s+(?P<date>\d.*)"
s = "hi firstName lastName 27 Jun 2017"
m = re.match(rx, s)
if m:
    print(m.group("priority")) # => hi
    print(m.group("name"))     # => firstName lastName
    print(m.group("date"))     # => 27 Jun 2017

关于python - 以下字符串的正则表达式模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805363/

相关文章:

javascript - 正则表达式 - 替换特殊字符,点除外

python - float 在字典中显示时打印不同 - python

python - 使用 CIGAR 推断序列的长度

java - 正则表达式删除行尾之前的两个空格

regex - 可以使用正则表达式识别任何上下文无关语言吗?

mysql - mySql REGEXP 中的逻辑 AND 运算符?

java - 如何在 Java 中使用正则表达式拆分此字符串?

Python 字典 : there a speed difference between matching a numeric key over a word in python?

python - 对字符串的宽容相等性测试

python - RegEx Tokenizer 将文本拆分为单词、数字和标点符号