猿问

用正则表达式匹配单词序列

我有一个字符串列表,我只想从中提取项目名称,如果有的话,带空格。

字符串保留在 named 列中0,索引仅供参考。

例如,从每个索引行我想要以下结果:

索引 - 预期结果

0 - BOV BCONTRA

1 - BF 假释 C

2 - 鲮鱼块

... 等等。

请注意,内联 25 所需结果未与前面的数字用空格分隔

.索引行 30 中的单词行之间可以有一个点。

我试过re.findall(r"\n\d{1,2} \d+(\b\w+\b)")没有成功。

re.findall(r"\n\d{1,2} \d+( ?\w+)")只给我第一个词,我想要所有的词,而不仅仅是第一个。

这些行以一个\n未打印在列表中的字符开头。

开满天机
浏览 118回答 2
2回答

拉风的咖菲猫

所以基本上你需要文本中的所有大写字符串。试试这个表达式,它会得到所有带或不带空格的文本re.findall('[A-Z]+[ A-Z]*', text)

ABOUTYOU

看起来你想要[A-Z .]+,而不是“单词”(由 表示r'\w'),由整数包围。\w映射到 [a-zA-Z0-9_].这是正则表达式字符串:r'\d+ \d+([A-Z .]+)\d+'。我不知道你的意思是每行之前有一个换行符。如果您有一个包含行的字符串,最好将输入拆分为行string.splitlines(),然后在每个相关行上进行线性正则表达式匹配(re.match因此正则表达式仅从头开始匹配)。
随时随地看视频慕课网APP

相关分类

Python
我要回答