我试图用python中的正则表达式做一些相当简单的事情......这就是我至少想到的。
我想要做的是匹配字符串中的单词,如果它前面跟着一个空格。如果它位于字符串的开头,则之前不需要空格 - 如果它最后,也不要搜索空格。
示例:
"WordA WordB WordC-WordD WordE"
我想匹配WordA WordB WordE
。
我只是想出了这样做的简单方法......
(?<=(?<=^)|(?<=\s))\w+(?=(?=\s)|(?=$))
在我看来,这个简单的问题必须有一个简单的方法....
我想我可以从(?<=\s|^)
开始,但这似乎不可能,因为&#34;后视需要固定宽度模式&#34;。
答案 0 :(得分:7)
您似乎在Python中工作,因为(?<=^|\s)
在PCRE,Java和Ruby中完全有效(并且.NET正则表达式支持无限宽度的外观模式)。
使用
(?<!\S)\w+(?!\S)
它将匹配用空格或字符串的开头/结尾括起来的1个或多个单词字符。
请参阅regex demo。
模式详情:
(?<!\S)
- 一旦引擎在当前位置的左侧立即找到非空白字符串,则会导致匹配失败的负面后瞻\w+
- 一个或多个单词字符(?!\S)
- 一旦引擎在当前位置的右侧立即找到非空白字符,就会导致匹配失败。