如何列出以特定字符开头和结尾的所有Unicode字符串?

时间:2014-01-27 14:14:47

标签: python regex unicode

我试图列出所有具有特定结尾和开始的单词。 这是ണ്我的结束字符,വി是我的起始字符。

这是我的输入

പാമോലിന്‍ കേസിന്റെ വിചാരണ നടപടികള്‍ ഹൈക്കോടതി രണ്ടുമാസത്തേക്ക് സ്‌റ്റേചെയ്തു. കേസ് പിന്‍വലിക്കണമെന്ന ആവശ്യം നിരസിച്ച തൃശ്ശൂര്‍ വിജിലന്‍സ് കോടതി ഉത്തരവിനെതിരെ വിജിലന്‍സ് സമര്‍പ്പിച്ച ഹര്‍ജിയിലാണ് ഇടക്കാല ഉത്തരവ്.

预期输出

വിചാരണ

如何为它编写正则表达式?

re.findall(ur'\bവി\w+ണ\b', inputtext, flags=re.UNICODE) won´t work

我仍然不明白为什么它不像英语一样工作,请在答案中添加这个事实,以便我能更好地理解问题

2 个答案:

答案 0 :(得分:1)

您的输入文字中充满了单词和非单词字符,因此确定单词边界的唯一方法是查看空格的后方和前方:

re.findall(ur'(?<![^ ])വി[^ ]+ണ്?(?![^ ])', inputtext, flags=re.UNICODE)

其中inputtext是Unicode值。 (?<!...)(?!...)是负面的后视和前瞻性断言;文本中的匹配位置分别以非空格字符开头或后跟。

在你的边界文本中,我们也匹配非空格。

这符合您的预期输入:

>>> print re.findall(ur'(?<![^ ])വി[^ ]+ണ്?(?![^ ])', inputtext, flags=re.UNICODE)[0]
വിചാരണ

答案 1 :(得分:0)

......或者,如果你想要更多口头的话

original_list = ('abc', 'ccbd', 'abbc')
filtered = tuple(filter(lambda x: x.startswith('a') and x.endswith('c'), original_list))
filtered
('abc', 'abbc')

但它肯定会回答你的问题。