使用正向前瞻(?=)和反向前瞻(?!)实现这个正则表达式。正向前瞻表示当前位置后面必须匹配某个表达式,反之亦然。
代码示例:
(?<=\s|^)s\w*(?!\s+s)\b
解释:
- (?<=\s|^):前置断言,匹配空格或句子开头,表示s的前一个字符。
- s:匹配字母s。
- \w*:匹配字母、数字或下划线0或多个,表示s后面的字符。
- (?!\s+s):后置否定断言,表示不匹配以空格开头的s开头单词。
- \b:匹配单词边界符,表示整个单词完整匹配。
这个正则表达式可以匹配以下例子:
- she sells seashells by the seashore
- start singing softly so that steve won't hear
- spring is in the air, and the sun is shining
但是它不能匹配以下例子:
- serious problems require serious solutions
- Sydney is the largest city in Australia
因为这些例子中,第一个s后面的单词也以s开头。