匹配正则表达式中的相似字符串,但不是所有出现 [关闭]

Posted

技术标签:

【中文标题】匹配正则表达式中的相似字符串,但不是所有出现 [关闭]【英文标题】:Match similar string in regex, but not all occurences [closed] 【发布时间】:2022-01-12 01:15:08 【问题描述】:

我想知道是否可以匹配两条或多条相似行中的一条。

要匹配的字符串:

Its a string
Its a string
Its a string

异常结果:

Its a string

我尝试的所有内容都选择了每一行,因为它们绝对相似。

是否可以始终保持一条相似的行不匹配?

【问题讨论】:

您能否分享一个您尝试过的最小可重现示例,并解释为什么它不能满足您的需求***.com/help/minimal-reproducible-example 【参考方案1】:

我不能 100% 确定这对您是否有效,但我认为您正在尝试这样做。

import re
p = re.compile(r'(^.+$)((.|\n|r)*)^\1$', re.MULTILINE)
result = p.search(string)

repeated_line = result.groups()[0].strip()

您需要指定 re.MULTILINE 以便它可以捕获 ^$ 字符。

下面是正则表达式的快速总结:

(^.+$)          # Matches a full line and captures it into '\1'  
((.|\n|\r)*)    # Matches any number of characters/newlines  
^\1$            # Matches the first capturing group ensuring that the second occurrence fills a line and has it's own line.

可能有更好的方法可以做到这一点,但这是我想到的第一个专门使用正则表达式的解决方案。

【讨论】:

以上是关于匹配正则表达式中的相似字符串,但不是所有出现 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

趣玩Python第16关:3个技巧掌握正则

vim 和grep 正则表达式相似和区别

(php) 正则表达式删除注释但忽略字符串中的出现

51正则表达式匹配

正则表达式匹配

如何匹配所有出现的正则表达式