如何在Python正则表达式匹配中处理多行模式

Lei Hao

我有一个用“公司”一词替换的公司名称列表。跨多行的列表。

cmp=re.compile(""" A | B |
                   C | D
               """)
text='A is a great company, so is B'
cmp.sub('company',text)

但这是行不通的。我该如何解决?

编辑:

上面给出的示例未考虑公司名称中的空格。

company1=re.compile(r"""Berkshire Hathaway|Australia & New Zealand Bank
                  |Wells Fargo|AIG
                  |Ind & Comm Bank of China|BNP Paribas""")
company2=re.compile(r"""Berkshire Hathaway|Australia & New Zealand Bank
                  |Wells Fargo|AIG
                  |Ind & Comm Bank of China|BNP Paribas""",re.VERBOSE)
text='AIG is a great company, so is Berkshire Hathaway'  
company1.sub('cmp',text) 
>>> 'AIG is a great company, so is cmp'
company2.sub('cmp',text) 
>>> 'cmp is a great company, so is Berkshire Hathaway'
克兰

您可以将其视为冗长模式的示例,该模式允许(并忽略)像换行符这样的空格:

import re

cmp = re.compile(r""" A | B |
                   C | D
               """, re.VERBOSE)
text = 'A is a great company, so is B'
print(cmp.sub('company', text))

输出值

company is a great company, so is company

公司名称中包含空格。...关于如何解决这个问题的任何想法?

我们需要对名称中出现的空格字符进行CGI转义。这是一种基于正则表达式的方法,不需要对编码的空间进行解码:

import re

companies = re.compile(re.sub(r"(?<=\S) (?=\S)", r"[ ]", """Berkshire Hathaway|Australia & New Zealand Bank
                  |Wells Fargo|AIG
                  |Ind & Comm Bank of China|BNP Paribas"""), re.VERBOSE)

text = 'AIG is a great company, so is Berkshire Hathaway'

print(companies.sub('cmp', text))

输出值

cmp is a great company, so is cmp

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 Python 中匹配多行正则表达式模式

如何在python中匹配正则表达式?

正则表达式如何在正则表达式模式中间处理`^`或`$`?

如何在python中的多行字符串中以不同的模式使用正则表达式

如何在正则表达式中跨多行匹配任何字符?

正则表达式模式无法在python中匹配

python中的负正则表达式模式匹配

python中的正则表达式模式匹配

多行正则表达式模式匹配

正则表达式匹配多行模式

如何在Python 3中的assertRegex中表达多行正则表达式?

如何在PHP中以这种模式匹配日期或正则表达式中的特定作品

如何在scala中的foreach函数中的正则表达式上进行模式匹配?

如何在正则表达式中匹配字符串后跟重复模式?

如何在Perl中的目录下匹配多个文件的正则表达式模式?

如何在字符串中搜索正则表达式模式的重叠匹配

如何在R中精确匹配正则表达式并提取模式

如何在正则表达式中匹配字母数字模式?

如何在模式匹配之前使用正则表达式将字符串分成多行

如何在命令行中使用perl风格的正则表达式匹配多行模式?

如何在Javascript中匹配正则表达式

如何在Smalltalk正则表达式中匹配[

如何在正则表达式中匹配“ [”和“]”?

如何在正则表达式中匹配“或”内部?

如何在python中解析多行catalina日志-正则表达式

vbscript中的正则表达式模式以匹配多行文本

Vim正则表达式-如何反转匹配多行的正则表达式?

如何用正则表达式设置多行模式

正则表达式以匹配多行