繁体   English   中英

如何使用 Python Regex 查找结尾带有大写单词的句子?

[英]How do I use Python Regex to find a sentence with a capitalized word at the end?

我正在为类(在 jupyter 中)进行作业,我需要在 Python 中编写一个regex语句,该语句将返回所有行(文档已经分开),最后一个单词完全大写。

例如,如果我有以下句子:

我喜欢苹果。

我喜欢橘子。

我喜欢土豆。

第一句和第三句应该回到我身边。 这是我尝试过的:

my_regex = r".*[^a-z][A-Z]$"
[line for line in poemlines if re.search(my_regex, line)]

my_regex = r"\b[^a-z][A-Z]{0,10}$"
[line for line in poemlines if re.search(my_regex, line)]

你试过:

r".*[^a-z][A-Z]$"

这匹配任何.* ,后跟不是单个小写字母[^az]的字符,后跟单个大写字母[AZ]的字符,然后是字符串$的结尾。

你试过:

r"\b[^a-z][A-Z]{0,10}$"

这匹配单词边界\\b ,后跟不是单个小写字母[^az]字符,后跟 0-10 个大写字母[AZ]{0,10} ,然后是字符串$的结尾。

我发现刚接触正则表达式的程序员经常被它们弄糊涂,最终只是尝试了一堆东西 - 理解正则表达式中每个字符的含义真的很有帮助,在线正则表达式工具可以帮助解决这个问题,因为它们往往会提供一个完整解释(如 regex101.com)

像这样的事情是有道理的:

import re

poemlines = ['I like APPLES.', 'I like oranges.', 'I like POTATOES.']

my_regex = r'\b[A-Z]+\.$'
print([line for line in poemlines if re.search(my_regex, line, re.MULTILINE)])

这是有效的,因为它匹配单词边界\\b ,后跟一个或多次的大写字母[AZ]+ ,后跟文字句点\\. 然后是字符串$的结尾。

请参阅此处的解释https://regex101.com/r/XstTcc/1并使用它。 请注意,它也可以在没有, re.MULTILINE ,但这是因为每一行都是它自己的字符串。 在您要在多行文本中进行匹配的情况下,您会希望在那里进行匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM