如何构建正则表达式以匹配模式,同时排除某些与模式匹配的已知单词。在示例中,我有这个字符串:
我喜欢d.r.e.a.m去做我喜欢的事。
我有以下正则表达式: \ b(。{1,2}(\ s |。| - | _)){2,}
匹配:
到d.r.e.a.m
要做的事情
我想要的是以匹配的方式更改此正则表达式:
d.r.e.a.m
我知道。
如果我将其更改为 \ b([^(to)] {1,2}(\ s |。| - | _)){2,}
它将部分工作但它会排除单个字母,如 't''o'而不是整个单词'to'
如何解决这个问题?
答案 0 :(得分:2)
您可以使用
/\b(?!(?:I|at|[td]o)\b)\w{1,2}(?:[\W_](?!(?:I|at|[td]o)\b)\w{1,2})*\b/
匹配
\b
- 字边界(?!(?:I|at|[td]o)\b)\w{1,2}
- 后跟1或2个字词不等于I
,at
,to
或do
(?:[\W_](?!(?:I|at|[td]o)\b)\w{1,2})*
- 重复0次以上:
[\W_]
- 非字词或_
(?!(?:I|at|[td]o)\b)\w{1,2}
- 见上文\b
- 一个单词边界。