Python Regex仅匹配任何字符之间的小写单词

nukf8bse  于 2023-06-25  发布在  Python
关注(0)|答案(2)|浏览(181)

我试图捕捉所有非单词字符之间的英文单词(只是纯[a-z]+)
所以这一行:
"你好" means "Hello" and "再见" is "See you".hello_me bye-you what6 58then end_of_this
将返回:
意思是,和,是,你,你好,我,再见,你,什么,然后,结束,的,这个
除了a-z,单词可以有任何环境
我想到了这个:

(?:[\s_\d\"\'-])?([a-z]+)(?:[-\s_\d\"\'])?

然而,它匹配'ello'在你好,但我想完全忽略非小写的话
如果模板设计允许使用忽略大小写标志,则也会很好

(?i)(?:[\s_\d\"\'-])?([a-z]+)(?:[-\s_\d\"\'])?

以在仅小写匹配项和所有匹配项之间轻松切换

pod7payv

pod7payv1#

这对于示例是有效的。可能漏掉了一些边缘案例...

import re

s='"你好" means "Hello" and "再见" is "See you".hello_me bye-you what6 58then end_of_this'
print(re.findall(r'(?:\b|[^A-Za-z]|(?<=_))([a-z]+)(?:\b|[^A-Za-z]|(?=_))', s))

输出:

['means', 'and', 'is', 'you', 'hello', 'me', 'bye', 'you', 'what', 'then', 'end', 'of', 'this']
k7fdbhmy

k7fdbhmy2#

这似乎并不难。
之前已经描述了用(?<![a-zA-Z])表示的自定义单词边界
(?![a-zA-Z])之后
(?<![a-zA-Z])[a-z]+(?![a-zA-Z])
代码样本

import re

s='"你好" means "Hello" and "再见" is "See you".hello_me bye-you what6 58then end_of_this'
print(re.findall(r'(?<![a-zA-Z])[a-z]+(?![a-zA-Z])', s))

输出量

['means', 'and', 'is', 'you', 'hello', 'me', 'bye', 'you', 'what', 'then', 'end', 'of', 'this']

相关问题