mah*_*eng 4 regex lookahead lookbehind
我几乎得到了答案,但我错过了一些东西,我希望有人可以帮助我.
我需要一个正则表达式,它将匹配句子中每个单词的第一个字母.然后我需要用正确数量的星号替换匹配的字母.例如,如果我有以下句子:
There is an enormous apple tree in my backyard.
Run Code Online (Sandbox Code Playgroud)
我需要得到这个结果:
T**** i* a* e******* a**** t*** i* m* b*******.
Run Code Online (Sandbox Code Playgroud)
我设法想出一个几乎可以做到的表达式:
(?<=(\b[A-Za-z]))([a-z]+)
Run Code Online (Sandbox Code Playgroud)
使用上面的例句,该表达式给了我:
T* i* a* e* a* t* i* m* b*.
Run Code Online (Sandbox Code Playgroud)
如何获得正确数量的星号?
谢谢.
试试这个:
\B[a-z]
Run Code Online (Sandbox Code Playgroud)
\B是相反的\b- 它匹配没有单词边界的地方 - 当我们看到一个字母在另一个字母之后.
你的正则表达式正在替换单词的整个尾部 - [a-z]+用一个星号.你应该逐个替换它们.如果你想要它可以工作,你应该匹配一个字母,但检查后面有一个字(这有点无意义,因为你也可以检查一个字母(?<=[A-Za-z])[a-z]):
(?<=\b[A-Za-z]+)[a-z]
Run Code Online (Sandbox Code Playgroud)
(请注意,最后一个正则表达式具有可变长度的lookbehind,这在大多数正则表达式中都没有实现)