我需要找到一个正则表达式来匹配(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实现

最佳答案

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

\b(sun|flower)\b

关于regex - 从一组单词匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61881997/

10-12 05:51