gpt4 book ai didi

python 2.7 : regex - match any letter from any language

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:52 25 4
gpt4 key购买 nike

我试图了解如何在 Python 2.7 中检查字符串是否仅包含字母(来自任何语言)。我试过这段代码:

# -*- coding: utf-8 -*-
import re

def main():
regexp1 = re.compile('[^\W\d_]+', re.IGNORECASE | re.UNICODE)
regexp2 = re.compile('[\p{L}]+', re.IGNORECASE | re.UNICODE)

print("1", regexp1.search(u"test"))
print("2", regexp1.search(u'äö'))
print("3", regexp1.search(u'...'))
print("4", regexp1.search(u'9a'))
print("5", regexp1.search(u'New / York'))

print("6", regexp2.search(u"test"))
print("7", regexp2.search(u'äö'))
print("8", regexp2.search(u'...'))
print("9", regexp2.search(u'9a'))
print("10", regexp2.search(u'New / York'))

if __name__ == '__main__':
main()

输出:

('1', <_sre.SRE_Match object at 0x02ACF678>)
('2', <_sre.SRE_Match object at 0x02ACF678>)
('3', None)
('4', <_sre.SRE_Match object at 0x02ACF678>)
('5', <_sre.SRE_Match object at 0x02ACF678>)
('1', None)
('2', None)
('3', None)
('4', None)
('5', None)

我想要一个仅匹配字符串 №1 和字符串 №2 的正则表达式(仅包含来自任何语言的字母的字符串)。但现在它匹配包含字母(也包含数字和/)​​的字符串。

我也尝试过使用 \p{L} 正则表达式,但它根本不起作用。我试过这个正则表达式:[\p{L}]+, (\p{L})+, \p{L} .

最佳答案

regexp1 是一个好的开始。问题是 regexp1 匹配至少包含一个字母的字符串,而不是只包含字母的字符串。试试这个:

regexp1 = re.compile('^[^\W\d_]+$', re.IGNORECASE | re.UNICODE)

这会将匹配“锚定”到字符串的开头和结尾,这意味着它不能只匹配“New/York”的“New”部分。

python re 模块似乎不支持像 \p{L} 这样的字符类,但是有第三方 regex 模块。请参阅 https://pypi.python.org/pypi/regex/ 处的文档但是,我无法谈论该模块的性能或标准合规性。

关于 python 2.7 : regex - match any letter from any language,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45924230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com