【发布时间】:2018-02-27 17:44:18
【问题描述】:
如何构建正则表达式以匹配模式,同时排除某些与模式匹配的已知单词。例如,我有这个字符串:
我喜欢在去打球时保持清醒。
我有以下正则表达式:\b(.{1,2}(\s|.|-|_)){2,}
这匹配:
到 d.r.e.a.m at
做自己的事情。
我想要的是改变这个正则表达式以匹配:
d.r.e.a.m
h i k i n g.
如果我把它改成这个 \b([^(to)]{1,2}(\s|.|-|_)){2,}
它会部分工作,但它会排除个别字母,如 't' 'o' 而不是整个单词 'to'
如何解决?
【问题讨论】:
-
首先,您是如何使用正则表达式获得该输出的?我在不是
to d.r.e.a.m at和to do h i k i n g的组中得到g.和g.。 -
(?:\b[^\W_][\s._-]){2,}呢? -
你有
d.r.e_a-m这样的词吗?如果是,它们应该匹配吗?hi.k.i.n.g呢? -
h i k i n g末尾的点一定吗?如果没有,那么\b\w([\s._-])\w(?:\1\w)+. -
您尝试使用哪种编程语言?
标签: regex