正则表达式:匹配white space之间的词
Regular expression: matching words between white space
我正在尝试使用 python 中的正则表达式做一些相当简单的事情……至少我是这么想的。
我想做的是匹配一个字符串中的单词,前提是它的前后都有一个空格。如果它在字符串的开头,则之前不需要空格 - 如果它在末尾,也不要搜索空格。
示例:
"WordA WordB WordC-WordD WordE"
我要匹配WordA WordB WordE
.
我只是想出了一个过于复杂的方法...
(?<=(?<=^)|(?<=\s))\w+(?=(?=\s)|(?=$))
在我看来,对于这样一个简单的问题,必须有一个简单的方法....
我想我可以从 (?<=\s|^)
开始,但这似乎不可能,因为 "look-behind requires fixed-width pattern".
您似乎在 Python 中工作,因为 (?<=^|\s)
在 PCRE、Java 和 Ruby 中完全有效(并且 .NET 正则表达式支持无限宽度的后视模式)。
使用
(?<!\S)\w+(?!\S)
它将匹配 1 个或多个用空格或 start/end 字符串括起来的单词字符。
参见regex demo。
图案详情:
(?<!\S)
- 一旦引擎发现紧邻当前位置左侧的非空白字符,就会导致匹配失败的负面回顾
\w+
- 1 个或多个单词字符
(?!\S)
- 一旦引擎发现紧邻当前位置右侧的非空白字符,就会导致匹配失败的否定前瞻。
我正在尝试使用 python 中的正则表达式做一些相当简单的事情……至少我是这么想的。
我想做的是匹配一个字符串中的单词,前提是它的前后都有一个空格。如果它在字符串的开头,则之前不需要空格 - 如果它在末尾,也不要搜索空格。
示例:
"WordA WordB WordC-WordD WordE"
我要匹配WordA WordB WordE
.
我只是想出了一个过于复杂的方法...
(?<=(?<=^)|(?<=\s))\w+(?=(?=\s)|(?=$))
在我看来,对于这样一个简单的问题,必须有一个简单的方法....
我想我可以从 (?<=\s|^)
开始,但这似乎不可能,因为 "look-behind requires fixed-width pattern".
您似乎在 Python 中工作,因为 (?<=^|\s)
在 PCRE、Java 和 Ruby 中完全有效(并且 .NET 正则表达式支持无限宽度的后视模式)。
使用
(?<!\S)\w+(?!\S)
它将匹配 1 个或多个用空格或 start/end 字符串括起来的单词字符。
参见regex demo。
图案详情:
(?<!\S)
- 一旦引擎发现紧邻当前位置左侧的非空白字符,就会导致匹配失败的负面回顾\w+
- 1 个或多个单词字符(?!\S)
- 一旦引擎发现紧邻当前位置右侧的非空白字符,就会导致匹配失败的否定前瞻。