我几乎在这里得到了答案,但我遗漏了一些东西,我希望这里有人可以帮助我。
我需要一个正则表达式来匹配句子中每个单词中除第一个字母之外的所有字母。然后我需要用正确数量的星号替换匹配的字母。例如,如果我有以下句子:
There is an enormous apple tree in my backyard.
我需要得到这个结果:
T**** i* a* e******* a**** t*** i* m* b*******.
我设法想出了一个几乎可以做到这一点的表达式:
(?<=(\b[A-Za-z]))([a-z]+)
使用上面的示例句子,该表达式给出了:
T* i* a* e* a* t* i* m* b*.
如何获得正确数量的星号?
谢谢。
尝试这个:
\B[a-z]
\B
是相反的\b
- 它匹配没有单词边界的地方 - 当我们看到一个字母在另一个字母之后时。
您的正则表达式正在替换单词的整个尾部 -[a-z]+
,带有一个星号。您应该将它们一一替换。如果你想让它工作,你应该匹配一个字母,但是检查后面有一个单词(这有点毫无意义,因为你最好检查一个字母(?<=[A-Za-z])[a-z]
):
(?<=\b[A-Za-z]+)[a-z]
(请注意,最后一个正则表达式具有可变长度的lookbehind,这在大多数正则表达式风格中都没有实现)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)