【发布时间】:2025-11-28 16:00:02
【问题描述】:
我正在寻找一个正则表达式来返回段落中的前 [n] 个单词,或者,如果该段落包含少于 [n] 个单词,则返回整个段落。
例如,假设我最多需要前 7 个单词:
<p>one two <tag>three</tag> four five, six seven eight nine ten.</p><p>ignore</p>
我会得到:
one two <tag>three</tag> four five, six seven
并且在包含少于请求的单词数的段落上使用相同的 RegEx:
<p>one two <tag>three</tag> four five.</p><p>ignore</p>
只会返回:
one two <tag>three</tag> four five.
我对该问题的尝试导致了以下正则表达式:
^(?:\<p.*?\>)((?:\w+\b.*?){1,7}).*(?:\</p\>)
但是,这只会返回第一个单词 - “one”。它不起作用。我觉得 。*? (在 \w+\b 之后)导致问题。
我哪里出错了?任何人都可以提供一个可以工作的正则表达式吗?
仅供参考,我正在使用 .Net 3.5 的 RegEX 引擎(通过 C#)
非常感谢
【问题讨论】: