首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex -查找所有空格,忽略多行字符串中连字符分隔的单词。

Regex -查找所有空格,忽略多行字符串中连字符分隔的单词。
EN

Stack Overflow用户
提问于 2020-03-03 13:12:44
回答 1查看 72关注 0票数 0

我想要创建一个regex模式,它查找空格并忽略连字符分隔的单词。

基本规则是查找任何后续的空白([\s]+),并在模式为而不是的情况下查找空白空间:

[\S]+-[\s]+[\S]+ (我不想与空白空间相匹配的模式)

任何其他的空白空间都应该匹配。

匹配的间隔应该仅包括空白空间,而不是其他字符。

例如,

abc

应该在3-4位置匹配。

abc

定义

应该从abc的末尾匹配到def的开始。

abc-

定义

不应该匹配。

abc -

定义

应该在3-4,5-6匹配。

搜索的字符串是多行的,有许多空格,我想在一个搜索中找到它们。

尝试了许多不同的模式(具有负的前瞻性和回顾性),但是没有一个能够适用于所有的情况。

使用python内置的re模块。

可以通过两次搜索来完成:

[\s]+

  • search

  • 从(1)

的匹配中搜索(2)组中所有发生的[\S]+-([\s]+)[\S]+

  • remove匹配

一次搜索就能做到吗?

EN

回答 1

Stack Overflow用户

发布于 2020-03-03 14:39:02

这个怎么样:

代码语言:javascript
运行
复制
(?<![\s\-])[\s](?!\-\s\n)

  1. (?<![\s\-])不看空间后面的空间和-:(负看behind)
  2. (?!\-\s\n)不看前面的空间-空间和新行:(负向前看)

编辑:

试试这个:

代码语言:javascript
运行
复制
(?<![\s])[\s+](?!\-\s\n)(?!\n{2})

在查看了示例数据之后,其中一些数据包含了双新行,因此:

  1. (?<![\s])不看space
  2. (?!\-\s\n)不看破折号,空格,newline
  3. (?!\n{2})不看双换行符
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60508076

复制
相关文章

相似问题

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