我试图列出所有具有特定结尾和开始的单词。
这是ണ്
我的结束字符,വി
是我的起始字符。
这是我的输入
പാമോലിന് കേസിന്റെ വിചാരണ നടപടികള് ഹൈക്കോടതി രണ്ടുമാസത്തേക്ക് സ്റ്റേചെയ്തു. കേസ് പിന്വലിക്കണമെന്ന ആവശ്യം നിരസിച്ച തൃശ്ശൂര് വിജിലന്സ് കോടതി ഉത്തരവിനെതിരെ വിജിലന്സ് സമര്പ്പിച്ച ഹര്ജിയിലാണ് ഇടക്കാല ഉത്തരവ്.
预期输出
വിചാരണ
如何为它编写正则表达式?
re.findall(ur'\bവി\w+ണ\b', inputtext, flags=re.UNICODE) won´t work
我仍然不明白为什么它不像英语一样工作,请在答案中添加这个事实,以便我能更好地理解问题
答案 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')
但它肯定会回答你的问题。