Python 基于正则表达式中的相同值选择组
我有以下内容Python 基于正则表达式中的相同值选择组,python,regex,Python,Regex,我有以下内容 ONE 1234234534564 123 34erewrwer323 123 123fsgrt43232 123 TWO 42433412133fr 234 fafafd3234132 342 THREE sfafdfe345233 3234 FOUR 324ereffdf343 4323 fvdafasf34nhj 4323 fsfnhjdgh342g 4323 考虑到1、2、3和4是独立的组。我只想匹配1和4,基于每个组中每一行的第二个值
ONE
1234234534564 123
34erewrwer323 123
123fsgrt43232 123
TWO
42433412133fr 234
fafafd3234132 342
THREE
sfafdfe345233 3234
FOUR
324ereffdf343 4323
fvdafasf34nhj 4323
fsfnhjdgh342g 4323
考虑到1、2、3和4
是独立的组。我只想匹配1
和4
,基于每个组中每一行的第二个值必须相同的条件,并且它将匹配其中有多行的组。在正则表达式中如何实现这一点
我已经试过跟随正则表达式,但它没有达到标准
\w+\n\w+\t(\d+)(\n\w+\t\1){2,}
你可以用
r'(?m)^[A-Z]+\r?\n\S+\s+(\d+)(?:\r?\n\S+\s+\1)+$'
看
详细信息
-启用(?m)
模式,使re.MULTILINE
/^
分别匹配行的开始和结束$
-行的开头^
-1+大写ASCII字母(根据需要调整)[A-Z]+
-像CRLF或LF这样的换行符\r?\n
-1+非空白字符\S+
-1空格(如果选项卡是字段分隔符,则使用\s+
)\t
-捕获组1的一个或多个数字(\d+)
-换行符的一次或多次重复,后跟1+非空格、1+空格和与组1中相同的值,因为(?:\r?\n\S++\S++\1)+
是对存储在该组中的值的反向引用\1
-行结束$
re.finditer
:
for m in re.finditer(r'(?m)^[A-Z]+\r?\n\S+\s+(\d+)(?:\r?\n\S+\s+\1)+$', text):
print(m.group())
查看。试试@WiktorStribiżew这很好。.我如何通过python中的正则表达式代码只打印选定的组?查看答案并进行解释和演示。我如何通过python中的文本文件本身传递整个文本值内容?@pavithranG使用而不是
text
@WiktorStribiżew,++ve获得不错的解决方案,你能告诉我如何学习不同语言的正则表达式吗。我想知道是你通晓所有的语言,还是你对所有的语言都练习得太多了。先生,如果您能在这里指导我,我将不胜感激。@RavinderSingh13我在这里练习过,等等。参考rexegg.com和regular-expressions.info,这里解释了很多东西。