Den Asked:2024-02-21 13:30:19 +0000 UTC2024-02-21 13:30:19 +0000 UTC 2024-02-21 13:30:19 +0000 UTC 如何使用正则表达式提取公司名称 772 大家好。 如何使用正则表达式提取公司名称。 提前致谢! 选项(有时用空格分隔,有时不带空格): LLC 'ROGA' LLC "ROGA" LLC "ROGA" import re result = re.findall('(?i)(ооо|ип|зао)', 'привет ООО "РОГА" привет') python 2 个回答 Voted Алексей Р 2024-02-21T14:17:17Z2024-02-21T14:17:17Z 我们将缩写 OPF 形式化为未捕获组(?:...) OPF 和名称之间的任何类型的空格/引号均被视为 1+ 个非单词字符的序列\W+。引号的类型有很多,这里就不一一列举了,可以使用这种方法。 获取 1 个以上单词或空白字符的序列 最后我们取任意 1 个尾随符号 texts = """ООО 'РОГА' ООО "РОГА" пао «РОГА» пао(РОГА) пирога ООО'РОГА и копыта' "РОГА" ООО «РОГА» ип `иванов иван иванович` привет ООО "РОГА" привет""" print(*re.findall(r'(?:ооо|ип|зао|ao|пао)\W+[\w\s]+.', texts, re.IGNORECASE), sep='\n') ООО 'РОГА' ООО "РОГА" пао «РОГА» пао(РОГА) ООО'РОГА и копыта' ООО «РОГА» ип `иванов иван иванович` ООО "РОГА" Best Answer ΝNL993 2024-02-21T14:52:40Z2024-02-21T14:52:40Z re.findall('((ооо|ип|зао)\s+[\'"«].*?[\'"»])', 'привет ООО "РОГА" привет', re.I) 解释 我会立即提到我使用了一个标志re.I(与 相同re.IGNORECASE),这使我们独立于行中字母的大小写,也就是说,字母是否大写并不重要。现在让我们从正则表达式开始。一开始我们匹配一组字符串,如果匹配,我们继续。接下来我们匹配空格,至少要有1个空格,可以多写,这个是由(whitespace)+后面的符号提供给我们的\s。接下来,在方括号中我们输入一系列可以匹配的字符;名称本身可以是任何内容,最主要的是左右两边都有引号。
(?:...)\W+。引号的类型有很多,这里就不一一列举了,可以使用这种方法。解释
我会立即提到我使用了一个标志
re.I(与 相同re.IGNORECASE),这使我们独立于行中字母的大小写,也就是说,字母是否大写并不重要。现在让我们从正则表达式开始。一开始我们匹配一组字符串,如果匹配,我们继续。接下来我们匹配空格,至少要有1个空格,可以多写,这个是由(whitespace)+后面的符号提供给我们的\s。接下来,在方括号中我们输入一系列可以匹配的字符;名称本身可以是任何内容,最主要的是左右两边都有引号。