为了账号安全,请及时绑定邮箱和手机立即绑定

从一组单词匹配

从一组单词匹配

Go
ABOUTYOU 2022-06-06 14:39:55
我需要找到一个正则表达式(在 go 中)来匹配单词集中的(sun|flower)单词,例如但仅分隔单词,例如"sun flower"应该匹配两个单词,但"sunflower"或"sun-flower"不应该匹配。我的第一种方法是使用正则表达式\b(sun|flower)\b,但在这种情况下"sun-flower",两个词都是匹配的。尝试使用 , 之类的正则表达式(?:^|\s+)(sun|flower)(?:\s+|$)不 "sun-flower"匹配,这是可以的,但是当"sun flower"仅使用 sun 进行测试时匹配。我已经看到其他语言(如 java 或 python)具有前瞻和后瞻断言,我们可以使用正则表达式来实现这一点(?:^|(?<= ))(sun|flower)(?:(?= )|$)但是在 go 中不支持断言,所以我想知道是否有办法通过 go 实现这一点
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

删除破折号,然后使用包含在单词边界中的交替:

\b(sun|flower)\b


查看完整回答
反对 回复 2022-06-06
?
aluckdog

TA贡献1847条经验 获得超7个赞

我之前发布了一个答案,但后来想得更好。

无需对我的数据使用多次传递,我就能够获得前瞻和其他此类“花哨”的东西。

例如,为什么不简单地使用空格分割字符串,然后在生成的字符串切片中查找太阳或花朵?所涉及的正则表达式会更短(简单^(sun|flower)$),并且代码更容易维护。


查看完整回答
反对 回复 2022-06-06
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信