首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配空格+=或=是第一个字符

问匹配空格+=或=是第一个字符
EN

Stack Overflow用户
提问于 2022-08-28 14:21:35
回答 1查看 35关注 0票数 0

我通过regex101走得很远,但现在我被困住了。

我希望使用Python3.9中的Regex提取“标记”之间的字符串。在下面的示例行中,我将获得每一行的foobar。“标记”是=。但是那个标记确实有一些边缘的情况。

  1. lore =foobar= ipsum (在=之前和之后有空格)
  2. lore =foobar=.
  3. =foobar= ipsum
  4. lore =foobar=

这是不应该与不匹配的地方,因为=x是不允许的。

  1. lore =foobar=x

这是我正在使用的正则表达式(Python3.9)

=(.*?)=[ .] (请参见开头的空格!)

我可以处理第二个标记之后的字符;允许是空格或句点。

一号和二号正在工作。但3号和4号失踪了。

缺少无字符或行尾。

同样,在开始时,我不知道如何在= OR之前检查是否有字符。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-28 14:51:22

您可以将模式写成:

代码语言:javascript
复制
(?:^| )=(.*?)=(?:[ .]|$)
  • (?:^| )非捕获组,具有与空格或断言字符串开头匹配的交替|
  • =匹配
  • (.*?)捕获组1,尽可能匹配任何字符。
  • =匹配文字
  • (?:[ .]|$)匹配空格或点,或断言字符串的末尾。

Regex演示

如果在中间没有任何等号,您也可以将模式写成:

代码语言:javascript
复制
(?<!\S)=([^=\n]*)=(?:[ .]|$)
  • (?<!\S)断言左边的空白边界
  • =匹配
  • ([^=\n]*)捕获组1,匹配除=或换行符以外的任何字符。
  • =匹配
  • (?:[ .]|$)匹配空格或点,或断言字符串的末尾。

Regex演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73519485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档