我希望将动词的不同形式匹配为,然后是不带 ing 结尾的单词,然后是到。< / p>
我有这样的正则表达式:
\b(is|it's|are|been|was|were|am|'m)(.*(?!ing\s))\bto\b
然而,与
一起使用时Peppa and George love jumping in muddy puddles.
“跳入”仍然可以匹配,如何修改表达式?
答案 0 :(得分:0)
您可以使用以下正则表达式匹配be + space-separated word(s) + to
,同时排除be + verb-ing + to
:
(?:\b(?:is|it's|are|been|was|were|am)|(?:\B'm))(?:\s+\w++(?<!ing))*\s+to\b
请参阅regex demo
<强>详情
(?:
- 一个变更组:
\b(?:is|it's|are|been|was|were|am)
- 列表中的完整字词|
- 或(?:\B'm)
- 'm
前面没有任何单词char )
- 小组结尾(?:\s+\w++(?<!ing))*
- 0+序列
\s+
- 1+空格\w++(?<!ing)
- 一个不以ing
\s+
- 1+空格to\b
- 整个单词to
(\b
是单词边界)请注意,一开始只有一个\b
让您匹配'm
,因为'
不是字char。您可以将第一个(?:\b(?:is|it's|are|been|was|were|am)|(?:\B'm))
部分替换为(?<!\w)(?:is|it's|are|been|was|were|am|'m)
,或者,如果您希望仅在没有空格的情况下匹配它们(?<!\S)(?:is|it's|are|been|was|were|am|'m)
。或者,(?<![^\W\d_])(?:is|it's|are|been|was|were|am|'m)
(如果之前没有字母)。