python - 正则表达式匹配斜杠之间的条目,但不匹配斜杠 - 包括空条目

标签 python regex

我正在尝试使用正则表达式来匹配以下文本中斜杠之间的条目:

311102Z/5663.00N/00813.02E/GPS//03/-/

对于这个例子,结果应该是一系列具有以下内容的匹配项:

  • 311102Z
  • 5663.00N
  • 00813.02E
  • GPS
  • (一个空字符串)
  • 03
  • -

重要的是我们要捕获空条目并返回一个空匹配项。不幸的是,由于各种原因,我们不能在这里使用分组,或者匹配斜杠本身并在其上拆分。

我有以下正则表达式几乎可以正常工作:(.*?)(?=/)。可以看到此正则表达式的交互式显示 here .它可以很好地匹配所有条目,但在每个条目的末尾都有额外的空匹配。

我尝试用 + 替换 *,但这当然意味着它与空白条目不匹配。

有没有人知道我可以做些什么来使它符合我想要的方式 - 即。 没有这些额外的空匹配,但是斜线之间没有字符的空条目。

如果兼容性很重要,我在 Python 中使用这个正则表达式。

最佳答案

您可以将此正则表达式与前瞻和后视断言一起使用:

(?:(?<=/)|^)[^/]*(?=/)

RegEx Demo

代码:

>>> import re
>>> s = '311002Z/3623.00N/00412.02E/GPS//03/-/'
>>> print (re.findall(r'(?:(?<=/)|^)[^/]*(?=/)', s))
['311002Z', '3623.00N', '00412.02E', 'GPS', '', '03', '-']

正则表达式详细信息:

  • (?:(?<=/)|^) : 回头断言我们有 start 或 /在以前的位置
  • [^/]* : 匹配 0 个或多个不是 / 的字符
  • (?=/) : 向前断言我们有一个 /前进

关于python - 正则表达式匹配斜杠之间的条目,但不匹配斜杠 - 包括空条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62600563/

相关文章:

python - 使用 Django 进行日期过滤——如何将开始和结束日期发送到我的 View ?

python - 如何使用来自 mpl_toolkits.basemap.cm 的颜色图创建离散颜色条?

c++ - Boost Regex 提供空白捕获

java - 正则表达式,在一个句子中匹配两个序列

php - 从字符串中删除非文本字符(如表情符号)

python - 为什么 "isinstance(numpy.float64,numbers.Real)"返回 False?

python - 如何查找并删除字符串中的日期时间,即 : Sun Mar 3, 2019 07:39AM

python - 从元组列表创建 Spark rdd 并使用 groupByKey

r - 如何交替使用向量列表(正则表达式)

java - 检测包含空格的单词是否有效