【问题标题】:Regex - Match words with shared spaces正则表达式 - 将单词与共享空间匹配
【发布时间】:2018-07-16 14:52:40
【问题描述】:

如何匹配句子中的指定单词? 如果我有“指环王”这个句子并且想删除“of”和“the”,我该如何编写正则表达式?

我不希望它匹配任何内容,例如“不匹配它们”或“不经常匹配”。当 "the" 或 "of" 在行的开头或结尾时,它也应该匹配。

我遇到的问题是单词相互跟随,例如“指环王”的示例。可以这么说,当他们共享一个空间时。

我能做到的最好的事情是这样的:

/^(the|of) | (the|of)$| (of|the) /gmi

但这并不能解决我所有的问题。

【问题讨论】:

  • 该死!我正要在这里发帖@WiktorStribiżew :D
  • \b(of|the)\b 怎么样?
  • 字边界会更好
  • of 不太可能出现在字符串的开头或标点旁边,the 应该出现在类似的上下文中,但可以出现在字符串的开头。所以,/(?:^|\s+)(?:of|the)(?!\S)/gi 在这里看起来是可行的,但是当The 出现在开头时,字符串仍然需要从空格中修剪掉。
  • 我们两个,谁会把他的评论变成答案? @WiktorStribiżew

标签: regex spaces


【解决方案1】:

这是单词边界的完美任务

\b(of|the)\b

【讨论】:

    【解决方案2】:

    您可以使用前瞻组(?= ) [doc]:

    /^(the|of) | (the|of)$| (of|the)(?= )/gmi
    

    演示:https://regex101.com/r/Bo4Ur1/1

    【讨论】:

      【解决方案3】:

      /(of\s.*the\s)/gmi 会起作用吗?还是我误解了您要做什么? 这将找到句子中第一个 'of ' 到最后一个 'the ' 之间的所有内容。

      【讨论】:

      • 这不是我真正想要的。抱歉,如果我的帖子不清楚,但我希望它匹配,即使它“of”和“the”的顺序不准确。
      猜你喜欢
      • 2017-12-24
      • 2013-07-09
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      相关资源
      最近更新 更多