【问题标题】:Regex Lookahead in Import.io (IF-Else-Then)Import.io 中的正则表达式前瞻(IF-Else-Then)
【发布时间】:2016-03-22 14:09:47
【问题描述】:

我正在 import.io 爬虫脚本中寻找正则表达式。

文本可以包含:

xxx – yyy – zzz
rrr – sss

或者

xxx
yyy

在任何一种情况下,我都需要 yyy 部分。所以我创建了以下前瞻脚本:

(?=.*\–.*)– ([a-zA-Z0-9]*) –|(\n(.*))

在 regex.101 中,它似乎可以正常工作。 Link to Regex101

但是当我在 import.io 中尝试这个正则表达式时,它似乎不起作用。那么有人知道如何在 import.io 中使用适当的环视吗?

(加法1:) 似乎第一个测试有效,因此用虚线表示。但第二个没有。仍然不知道为什么。

【问题讨论】:

  • 您需要匹配 yyy 还是只看它并从匹配中忽略?因为前瞻用于后者。
  • 这个正则表达式 - -\s*(\w+)\s*-|\n(\w+)\n(?:\n|$)- 捕获连字符之间的任何单词,以及后跟空行文本结尾的任何单词。 regex101这是你想要的吗?
  • 似乎是换行符出错了。那个 import.io 没有正确处理这个问题。但我不知道在哪里匹配才能获得第二组。
  • 也许您需要添加\r - – +([a-zA-Z0-9]*) +–|\r?\n(.*)$
  • 我试过了,还是不行。

标签: regex lookahead import.io


【解决方案1】:

编辑如果换行符是错误的部分,你可以在你的模式中用 \s+ 替换换行符:

^(?:.*?)(?:\s*–\s*|\s+)(.*?)(?:\s*–\s*|$)

REGEX 101 DEMO

【讨论】:

  • 我需要一个数字下的捕获组。因此,无论哪种情况,它都低于 1 美元、2 美元或它所在的任何组。
  • 那请尝试第1版,匹配的是第一组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-07
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多