我试图在Python中使用正则表达式来做一件相当简单的事情...至少我是这么认为的。
我的目标是:如果一个单词前后都有空格,那么匹配该字符串中的单词。如果该单词位于字符串的开头,则不需要空格 - 如果该单词位于字符串的末尾,则也不需要搜索空格。
例如:
"WordA WordB WordC-WordD WordE"
我想匹配 WordA WordB WordE
。
我只想到了过于复杂的方法...
(?<=(?<=^)|(?<=\s))\w+(?=(?=\s)|(?=$))
我觉得对于这样一个简单的问题,一定有一个简单的方法......我想我可以从
(?<=\s|^)
开始,但似乎不可能,因为“后顾之忧需要固定宽度模式”。
\s
会匹配一个空格。可以看一下这个演示:只有一个匹配,因为两端的\s
必须 在左右两边都有一个空格。WordA
和WordE
一端没有空格。你可能认为(\s|^)\w+(\s|$)
可以解决问题,但是它不能匹配连续出现的单词,因为(\s|$)
消耗了WordA
后面的空格,所以(\s|^)
无法匹配到WordB
的匹配。 - Wiktor Stribiżew