【问题标题】:Regex condition in PythonPython中的正则表达式条件
【发布时间】:2017-02-15 05:42:22
【问题描述】:

我正在使用 Python 中的正则表达式库。我目前正在创建一个我想绕过示例字符串下方的条件,因为我逐行读取文件。

如果我发现如下格式,我想绕过该字符串:

2016 年 3 月 27 日 07:58:17.442

要绕过的示例字符串:

03/27/2016 07:58:17.442   U:Event:   Current Process Recipe Name = PFCA-800Pulse.prc [LLA_01] [2016-03-27_003_A1B]

我当前的代码:

    self.matchObj = re.match( r'([0-9])\w+', l)
    if not self.matchObj:
       #do the following code here

【问题讨论】:

  • 您似乎忘记在问题中包含问题。
  • 您能否更好地了解您要跳过的字符串。该字符串的哪些部分是常见的?哪些部分是独一无二的?是否有任何其他字符串与该字符串相似,但您不想绕过。
  • 该字符串的哪一部分应该与正则表达式匹配?因为如所写,它将匹配(03 是一个数字后跟一个类似单词的字符,因为类似单词的字符包括字母和数字),但如果你的所有行都像这样标记日期,它会跳过所有这些.您需要指定要跳过的内容以及要保留的内容。如果没有要保留的东西,您可以只使用正则表达式 r'' 并且您会跳过所有符合您给定规格的内容。
  • 您可以尝试使用regex101.com 构建正则表达式,它具有您作为初学者可能需要的所有帮助

标签: python regex


【解决方案1】:

试试这个:

    self.matchObj = re.match( r'^[0-9/]{10}.+$', l)

https://regex101.com/r/kAsQUn/1

编辑基于 cmets:

    self.matchObj = re.match( r'\d\d/\d\d/\d\d\d\d \d\d:\d\d:\d\d\.\d\d\d', l)

https://regex101.com/r/kAsQUn/2

【讨论】:

  • 它不检查时间戳,只检查日期,它实际上不检查日期,只检查数字和斜线(1234567890abc 会匹配,@987654327 也会匹配@)。旁注:使用re.match 时不需要^^ 对于match 是隐含的,这是matchre.searchwith some special behaviors in multiline mode.*$ 之间唯一真正的区别如果您只是测试而不是捕获,则可以省略(.+$ 不同,但我不明白为什么需要它)。
  • @ShadowRanger 你是对的,只是跟随 OP 的领导。在我看来,这就是她/他想要做的。但很好的评论。
  • @MotKohn 嗨,先生,是的,我只想检查字符串是否具有类似于此 03/27/2016 07:58:17.442 的格式
猜你喜欢
  • 2011-08-18
  • 2015-02-23
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
相关资源
最近更新 更多