Python 如何确保捕获组超过5个字符?
我正在使用以下代码:Python 如何确保捕获组超过5个字符?,python,regex,Python,Regex,我正在使用以下代码: (?i)(?我猜可能 (?i)(?<!see )(?<!\d)(?<!")(?<!“)ITEM.*?1A.*?\n*(?<!")(?<!“)RISK.*?FACTORS(?<!")\n*([^\r\n]{5,}?)\s*\n*ITEM.*?1B 输出 ['除本表10-K中的其他信息外,以下 在评估我们和我们的客户时,应仔细考虑风险因素 因为这些因素目前对业务有重大影响 或“] 如果您希望简化/修改/探索表达式,已在的右上面板中进
(?i)(?我猜可能
(?i)(?<!see )(?<!\d)(?<!")(?<!“)ITEM.*?1A.*?\n*(?<!")(?<!“)RISK.*?FACTORS(?<!")\n*([^\r\n]{5,}?)\s*\n*ITEM.*?1B
输出
['除本表10-K中的其他信息外,以下
在评估我们和我们的客户时,应仔细考虑风险因素
因为这些因素目前对业务有重大影响
或“]
如果您希望简化/修改/探索表达式,已在的右上面板中进行了说明。如果您愿意,还可以在中查看它如何与一些示例输入匹配
计数是在这样的数据附近进行的。
如果需要,可以将[^\S\r\n]
替换为\h
显著缩短正则表达式。
组1包含修剪后的数据
(?sm)^[^\S\r\n]*项目[^\S\r\n]+1A[^\S\r\n]*.[^\S\r\n]+风险[^\S\r\n]+因素[^\S\r\n]*\r?\n\S*(\S:(?!^[^\S\r\n]*项目)。{3,}\S*.[^\S\r\r\n]*项目[^\S\r\r\n]+1B^\r\S\r\r\n]*>
扩大
(?sm)
^ [^\S\r\n]* ITEM [^\S\r\n]+ 1A [^\S\r\n]* \.
[^\S\r\n]+ RISK [^\S\r\n]+ FACTORS [^\S\r\n]* \r? \n
\s*
( # (1 start)
\S
(?:
(?! ^ [^\S\r\n]* ITEM )
.
){3,}?
\S
) # (1 end)
\s*
^ [^\S\r\n]* ITEM [^\S\r\n]+ 1B [^\S\r\n]* \.
如果需要捕获超过5个字符,请尝试使用{5,}
。
123
(?i)(?<!see )(?<!\d)(?<!")(?<!“)ITEM.*?1A.*?\n*(?<!")(?<!“)RISK.*?FACTORS(?<!")\n*([^\r\n]{5,}?)\s*\n*ITEM.*?1B
import re
regex = r'(?i)(?<!see )(?<!\d)(?<!")(?<!“)ITEM.*?1A.*?\n*(?<!")(?<!“)RISK.*?FACTORS(?<!")\n*([^\r\n]{5,}?)\s*\n*ITEM.*?1B'
string = '''
ITEM 1A. RISK FACTORS
123
ITEM 1B.
ITEM 1A. RISK FACTORS
In addition to other information in this Form 10-K, the following risk factors should be carefully considered in evaluating us and our business because these factors currently have a significant impact or
ITEM 1B.
'''
print(re.findall(regex, string, re.DOTALL))
(?sm)
^ [^\S\r\n]* ITEM [^\S\r\n]+ 1A [^\S\r\n]* \.
[^\S\r\n]+ RISK [^\S\r\n]+ FACTORS [^\S\r\n]* \r? \n
\s*
( # (1 start)
\S
(?:
(?! ^ [^\S\r\n]* ITEM )
.
){3,}?
\S
) # (1 end)
\s*
^ [^\S\r\n]* ITEM [^\S\r\n]+ 1B [^\S\r\n]* \.