新行的正则表达式无法计算

2024-05-15 13:18:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到“每年”,以及“所有税收”之前的任何东西,但无法计算出这个的正则表达式

我尝试了几个正则表达式,但由于某些原因无效。有人能帮忙吗?我尝试使用正则表达式和python,但两者都无效

> r'per annum\\.(.+)\nAll taxes are assessed'
> 
> r'per annum\\.\n(.+)\nAll taxes are assessed'

> r'per annum(.+)nAll taxes are assessed'

interest charges at 8.0 % per annum.

MCMAHON, DENISE M
%RDM PROPERTIES
PO BOX 653
GOFFSTOWN NH 03045
MCMAHON, RAYMOND J
All taxes are assessed as of April 1st of each year.  Unless 
directed otherwise, tax bills are mailed to the last known 
address of the first owner l

Tags: ofthe原因areat税收pertaxes
3条回答
per annum.\n([\S\s]*)All taxes

我可以为你工作。[\S\S]匹配任何字符,包括换行符

已经有其他的答案会起作用,但这一个更准确地回答了“Regex for new line”的问题。在正则表达式中,点匹配除行终止符以外的任何字符。因此,您希望匹配并捕获任何角色或换行符。我把这个部分放在一个非捕获组中,但这并不是严格必要的。您可以忽略内部组进行的所有匹配

我假设您不想捕获空行,所以我在捕获组前面添加了另一个换行符

r'per annum\.\n\n((?:.|\n)+)\nAll taxes'

前面提到的[\s\s]方法也可以使用

这是一个Python解决方案:

import re
text = 'your text here'
match = re.search(r'\bper annum\.\s*(.+?)\nAll taxes are assessed', text, re.S)
if match:
  print(match.group(1))

online regex demo

(.+?)捕获per annum.和后跟All taxes are assessed的换行符之间的任何文本。注意annum后面的点是转义的,因为它是一个特殊的正则字符.由于re.S标志而匹配行尾

另外,re.search找到第一个正则表达式匹配,match.group(1)获得组1中的捕获

相关问题 更多 >